【问题标题】:How to create a complex Json structure manually in android without using API?如何在不使用 API 的情况下在 android 中手动创建复杂的 Json 结构?
【发布时间】:2018-10-24 09:18:40
【问题描述】:

我想使用 JsonObject 和 JsonArrays 手动创建一个 Json 结构,如下所示:

{
 "data":[
         {
          "company_name":"xyz",
          "Amount":"$2000",
          "Duplicate_amount":"$500"
         },
         {
          "company_name":"abc",
          "Amount":"$5000"
         },
         {
          "company_name":"zzz",
          "Amount":"$2500",
          "Duplicate_amount":"$1000"
         }
      ]
}

上面的 Json 是基于对 Arraylist 的检查生成的。例如:Arraylist [xyz,abc,zzz,xyz,hhh,zzz]。现在我想检查,如果 arraylist 包含重复元素,即这里的“xyz”和“zzz”,那么在 Json 结构中,Duplicate_amount Json 对象将被添加到 Json 中。否则,如果不存在重复项,则仅形成“company_name”和“amount”。整个json格式要这样形成。

怎么做?我有查找重复元素的逻辑。但我似乎无法根据检查找到形成上述 json 的逻辑。

谢谢

更新

到目前为止,我已经尝试过检查。但是下面的代码不起作用并且没有形成适当的 json。解决办法是什么?:

    JSONObject root_jsonObj = new JSONObject();
    JSONArray jsonArr = new JSONArray();
    JSONObject sub_jsonobj= new JSONObject();
    Object[] st = AppData.customer_arr.toArray();
    for (Object s : st) {

     //The if-else is the duplicate checking part here
        if (AppData.customer_arr.indexOf(s) != AppData.customer_arr.lastIndexOf(s)) {

            try {
                sub_jsonobj.put("name",AppData.customer_arr.get(counter));
                sub_jsonobj.put("dup_amount",AppData.amt_arr.get(counter));

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        else{
            try {
                sub_jsonobj.put("name",AppData.customer_arr.get(counter));
                sub_jsonobj.put("amount",AppData.amt_arr.get(counter));

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        jsonArr.put(sub_jsonobj);
        counter++;
    }
    try {
        root_jsonObj.put("data", jsonArr);

    } catch (Exception e) {
        e.printStackTrace();
    }

【问题讨论】:

  • 将它们转换成pojo,然后使用equals方法进行比较。只需在你的 POJO 中包含 equals 方法。
  • 你能举个例子吗?会有帮助的

标签: java android json arraylist


【解决方案1】:

你可以用这个。

JSONObject obj1 = new JSONObject();
try {
    obj1.put("company_name", "xyz");
    obj1.put("Amount", "$2000");
    obj1.put("Duplicate_amount", "$500");

} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

JSONObject obj2 = new JSONObject();
try {
    obj2.put("company_name", "xyz");
    obj2.put("Amount", "$2000");


} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


JSONArray jsonArray = new JSONArray();

jsonArray.put(obj1);
jsonArray.put(obj2);

JSONObject dataObj = new JSONObject();
    dataObj.put("Data", jsonArray);



String jsonStr = dataObj.toString();

    System.out.println("jsonString: "+jsonStr);

【讨论】:

  • 很抱歉,但这并不能解决我的问题。我想根据重复检查它是否在arraylist中包含重复来形成整个Json结构。如何解决?
  • 您可以将 json 解析为字符串,而不是进行重复搜索。
猜你喜欢
  • 2018-07-11
  • 2016-07-25
  • 2018-12-12
  • 1970-01-01
  • 2016-10-16
  • 2013-11-24
  • 2013-11-05
  • 2017-01-03
  • 1970-01-01
相关资源
最近更新 更多