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

时间:2015-03-20 06:13:27

标签: java android json

在这里,我有一个String,里面有JSONObject,如下所示:

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,我需要将此JSONObject a的String添加到ArrayList中,然后将其转换为ArrayList进入JSON应该是这样的:

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

我已经尝试过很多改变这种格式的东西,但是我没有得到确切的格式。有时它会将反斜杠\本身添加到JSON中,因为我们无法创建已JSON的{​​{1}}。

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

提前致谢。

4 个答案:

答案 0 :(得分:1)

试试这个,

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();

答案 1 :(得分:0)

我认为你没有正确处理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();
    }

答案 2 :(得分:0)

如果您希望使用GSON作为库来序列化和反序列化json数据,那么这是link。访问Tutorail Java Object to/from JSON和图书馆Gson

答案 3 :(得分:0)

这是伪代码。(因此无法编译) 但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}
相关问题