2015-06-01 2 views
0

Я пытаюсь обернуть массивList как строку Json, чтобы отправить его на сервер с помощью библиотеки Gson, но я получаю эту ошибку The constructor JsonPrimitive(Object) is not visible.Конструктор JsonPrimitive (Object) не отображается

Как это исправить?

Я ценю любую помощь.

SelectedRoute класс:

public class SelectedRoute { 

    ArrayList<Integer> selected; 

    public SelectedRoute(ArrayList<Integer> selected) { 
     this.selected = selected; 
    } 

    public ArrayList<Integer> getSelected() { 
     return selected; 
    } 

    public void setSelected(ArrayList<Integer> selected) { 
     this.selected = selected; 
    } 


} 

SelectedRouteSerializer класс:

public class SelectedRouteSerializer implements JsonSerializer<SelectedRoute>{ 

     @Override 
     public JsonElement serialize(SelectedRoute select, Type arg1, 
       JsonSerializationContext arg2) { 
      JsonObject result = new JsonObject(); 
       //The error is here. 
      result.add("selected", new JsonPrimitive(select.getSelected())); 


      return result; 
     } 


    } 
+0

Ваш текущий вопрос не имеет ничего общего с названием. Пожалуйста, не изменяйте свой вопрос. Просто добавьте дополнительную информацию. –

ответ

1

JSON primitive любая из

string 
number 
object 
array 
true 
false 
null 

и они представлены с Gson-х JsonPrimitve с четырьмя конструкторами: один для Boolean , один для String, один для Number и один для Character (один символ String). JsonPrimitive имеет частный конструктор пакета, который может принять ваше значение ArrayList, но, будучи приватным пакетом, он не доступен для вашего кода.

Java ArrayList не может быть представлен как примитив JSON. Это должен быть массив JSON.


Теперь вы изменяли вопрос, но вот пример для создания в JsonObject непосредственно

ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(1,2,3)); 
JsonObject jsonObject = new JsonObject(); 
JsonArray jsonArray = new JsonArray(); 
for (Integer value : arrayList) { 
    jsonArray.add(new JsonPrimitive(value)); 
} 
jsonObject.add("selected", jsonArray); 
+0

Есть ли способ обернуть массивList как json string? – MrPencil

+0

@MrPencil Просьба пояснить, как вы ожидаете, что он будет представлен в JSON. –

+0

вот так {"selected": [1,3,4]} Думаю, я сделал схему. – MrPencil

Смежные вопросы