2016-12-08 4 views
0

Мне нужно создать JSON со многими объектами внутри и каждый из них иметь массив строк. Я использую Java, а точнее Android.Android - JSON - Как создать JSON, который имеет объекты X и массив внутри каждого из них

Я хочу, чтобы произвести что-то вроде следующего:

"manager1": [ 
     {"product1":"xxxx"}, 
     {"product2":"yyyy"}, 
     {"product3":"zzzz"} 
    ], 
"manager2": [ 
     {"product1":"xxxx"}, 
     {"product2":"yyyy"}, 
     {"product3":"zzzz"} 
    ] 

У меня есть класс Bean, который имеет этот менеджер и массив информационных продуктов, я просто возникли проблемы, чтобы увидеть, как это будет вписываться в моей AsyncTask класса

ответ

1

Я бы рекомендовал не добавлять номера к вашим ключам. Это просто испортит ваши классы Java.

Использовать списки для всех.

{ 
    "managers": [ 
     { 
      "name": "manager1", 
      "products": ["xxx", "yyy", "zzz"] 
     }, 
     { 
      "name": "manager2", 
      "products": ["xxx", "yyy", "zzz"] 
     } 
    ] 
} 

Вы Pojos/фасоль будет выглядеть так

class Foo { 
    List<Manager> managers; 
} 

class Manager { 
    String name; 
    List<String> products; 
} 
+0

Благодарим за ответ, очень разъясняющий – Guigs

+1

@Guilherme Пожалуйста, отметьте ответ как «Принято», если он решил вашу проблему. – Mangesh

+0

@Mangesh Done. Не могли бы вы мне помочь? Я не уверен, как я передам все эти списки через мою AsyncTask, чтобы стать String ... params – Guigs

0

Если у вас есть объекты, которые вы можете использовать библиотеку Gson для преобразования объекта в JSON строку.

Gson gson = new Gson(); 
String json = gson.toJson(obj); 

Если вы спросите о структуре классов в вашем коде Java это будет карта массивов android.util.Pair.

Map<String, Pair<String, String>[]> map; 

Но ... вам нужно создать свой собственный сериализатор и десериализатор для класса Pair. Ответ вы можете найти здесь: How do I get Gson to serialize a list of basic name value pairs?