List> to org.json.JSONObject?

后端 未结 8 2021
借酒劲吻你
借酒劲吻你 2020-12-14 20:12
List> list = new ArrayList>();
Map map = new HashMap();

         


        
相关标签:
8条回答
  • 2020-12-14 20:38

    You can do it using both:

    JSONArray directly as,

    String toJson(Collection<Map<String, Object>> list)
    {       
        return new JSONArray(list).toString();
    }
    

    Or by iterating the list with Java8 (like @ShadowJohn solution):

    String toJson(Collection<Map<String, Object>> list)
    {       
        return new JSONArray( 
                list.stream()
                    .map((map) -> new JSONObject(map))
                .collect(Collectors.toList()))
            .toString();
    }
    
    0 讨论(0)
  • 2020-12-14 20:39

    This worked for me:

    List<JSONObject> jsonCategories = new ArrayList<JSONObject>();
    
    JSONObject jsonCategory = null;
    
    for (ICategory category : categories) {
        jsonCategory = new JSONObject();
        jsonCategory.put("categoryID", category.getCategoryID());
        jsonCategory.put("desc", category.getDesc());
        jsonCategories.add(jsonCategory);
    }
    try {
        PrintWriter out = response.getWriter();
        response.setContentType("text/xml");
        response.setHeader("Cache-Control", "no-cache");
        _log.info(jsonCategories.toString());
        out.write(jsonCategories.toString());
    
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    0 讨论(0)
  • 2020-12-14 20:41

    Also: you could consider using one of other parsers from json.org's list: most of them allow your Json "objects" and "arrays" to map natively to java.util.Maps and java.util.Lists; or in some cases to real Java objects too.

    My recommendation would be Jackson, http://jackson.codehaus.org/Tutorial which allows for mapping to List/Map/Integer/String/Boolean/null, as well as to real Beans/POJOs. Just give it the type and it maps data to you, or writes Java objects as Json. Others like "json-tools" from berlios, or google-gson also expose similar functionality.

    0 讨论(0)
  • 2020-12-14 20:43

    You need to end up with a JSONArray (corresponding to the List) of JSONObjects (the Map).

    Try declaring the json variable as a JSONArray instead of a JSONObject (I believe the JSONArray constructor will do the right thing).

    0 讨论(0)
  • 2020-12-14 20:52
    public String listmap_to_json_string(List<Map<String, Object>> list)
    {       
        JSONArray json_arr=new JSONArray();
        for (Map<String, Object> map : list) {
            JSONObject json_obj=new JSONObject();
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                String key = entry.getKey();
                Object value = entry.getValue();
                try {
                    json_obj.put(key,value);
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }                           
            }
            json_arr.put(json_obj);
        }
        return json_arr.toString();
    }
    

    alright, try this~ This worked for me :D

    0 讨论(0)
  • 2020-12-14 20:53
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    Map<String, Object> map = new HashMap<String, Object>();
    
    map.put("abc", "123456");
    map.put("def", "hmm");
    list.add(map);
    // it's wrong JSONObject json = new JSONObject(list);
    // if u use list to add data u must be use JSONArray
    
    JSONArray json = JSONArray.fromObject(list);
    try {
        System.err.println(json.toString(2));
    } catch (JSONException e) {
        e.printStackTrace();
    }
    
    0 讨论(0)
提交回复
热议问题