繁体   English   中英

将具有JSON的字符串转换为列表,然后将该列表添加回JSON

[英]Convert a string which has JSON into list and then add that list into JSON back

在这里,我有一个其中包含JSONObjectString ,如下所示:

String a = "{"company_name":"ABC","company_address":"hgfh"}";

我使用以下代码将此JSONObject添加到String

JSONObject company_one1 = new JSONObject();
                company_one1.put("company_name", cmpy_name.getText()
                        .toString().trim());
                company_one1.put("company_address", cmpy_addrs.getText()
                        .toString().trim());
a = company_one1.toString();

但是现在我只有String ,我需要将此String a的JSONObject添加到ArrayList ,然后将该ArrayList转换为JSON ,该JSON应该类似于:

  {"id":"5","data":[{"company_name":"ABC","company_address":"hgfh","image":["cmFodWxtaXNocmE="]}]}

我已经尝试了很多方法来更改这种格式,但是我没有得到确切的格式。 有时,它增加了反斜杠\\本身到JSON怎么一回事,因为我们不能创建一个JSON这已经是一个JSON

请给我一个适当的解决方案。

提前致谢。

尝试这个,

JSONArray imageArray = new JSONArray();
imageArray.put("cmFodWxtaXNocmE=");
//* you can add more to the image array by using the put method

JSONObject company_one1 = new JSONObject();
company_one1.put("company_name", cmpy_name.getText()
         .toString().trim());
company_one1.put("company_address", cmpy_addrs.getText()
         .toString().trim());

//* add the image array
company_one1.put("image", imageArray);

//* create a JSONArray for company types,
JSONArray dataArray = new JSONArray();
dataArray.put(company_one1);
//* you can add more to the array here by using the put method

//* now put all in one main JSONObject
JSONObject mainObj = new JSONObect();
mainObj.put("id", "5");
mainObj.put("data", dataArray);

String finalJsonString = mainObj.toString();

我不认为您应该谨慎地使用JSON。 也许您应该这样做:

        try {
        Map<String, String> map1 = new HashMap<String, String>();
        map1.put("company_name", "company_name");
        map1.put("company_address", "company_address");
        Map<String, String> map2 = new HashMap<String, String>();
        map2.put("company_name", "company_name");
        map2.put("company_address", "company_address");
        Map<String, String> map3 = new HashMap<String, String>();
        map3.put("company_name", "company_name");
        map3.put("company_address", "company_address");
        List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        list.add(map1);
        list.add(map2);
        list.add(map3);
        JSONArray jsonArray = new JSONArray(list);
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("id", "5");
        jsonObject1.put("data", jsonArray);
    } catch (JSONException e) {
        e.printStackTrace();
    }

如果您希望使用GSON作为库来对json数据进行序列化和反序列化,则这里是链接 从JSON和库Gson访问Tutorail Java对象

这是伪代码。(所以它可能无法编译)但是Gson非常简单和有用。

class Company {
  String name;
  ... // constructors, getter/setters...
}

class CompanyGroup {
  int id;
  List<Company> companies;
  ... // constructors, getter/setters...
}

String name = "ABC";
Company a = new Company(name);

int id = 5;
CompanyGroup g = new CompanyGroup(5);
g.companies.add(a);

String r = new Gson().toJson(g);
System.out.println(r);
// I/System.out﹕ {"companies":[{"name":"ABC"}],"id":5}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM