【问题标题】:Android - JSON - How to create JSON that has X objects and an array inside each one of themAndroid - JSON - 如何创建包含 X 个对象和每个对象内部的数组的 JSON
【发布时间】:2016-12-08 17:18:05
【问题描述】:

我需要生成一个包含许多对象的 JSON,并且每个对象都有一个字符串数组。我使用的是 Java,更具体地说是 Android。

我想制作如下内容:

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

我有一个 Bean 类,其中包含此管理器和产品信息数组,我只是很难看到它如何适合我的 AsyncTask 类

【问题讨论】:

    标签: android arrays json


    【解决方案1】:

    我建议不要将数字附加到您的密钥上。那只会弄乱你的java类。

    对所有内容都使用列表。

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

    你的 POJO / bean 看起来像这样

    class Foo {
        List<Manager> managers;
    }
    
    class Manager {
        String name;
        List<String> products;
    }
    

    【讨论】:

    • 谢谢你的回答,非常清楚
    • @Guilherme 如果解决了您的问题,请将答案标记为“已接受”。
    • @Mangesh 完成。你能帮我做一件事吗?我不知道如何通过我的 AsyncTask 传递所有这些列表成为字符串...参数
    • @Guigs 你只需要传递一个Foo 对象或一个JSONObject 类。 new WebTask().execute(obj);... 或者,你可以使用 Volley 或 Retrofit,一旦你学会了它们,它们比 AsyncTask 更容易搞砸
    【解决方案2】:

    如果您有对象,您可以使用 Gson 库将对象转换为 json 字符串。

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

    如果您询问 Java 代码中类的结构,它将是 android.util.Pair 数组的 Map。

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

    但是.... 您必须为 Pair 类创建自己的序列化器和反序列化器。你可以在这里找到答案:How do I get Gson to serialize a list of basic name value pairs?

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2020-09-03
      • 2018-06-28
      • 1970-01-01
      相关资源
      最近更新 更多