有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么不支持org。json。JSONObject删除了对不包含分号的密钥对值的支持?

我最近在生产中遇到了这个问题,我将把HashMap值存储为JSON,代码如下所示

import java.util.*;
import org.json.JSONObject;
public class JSONParser {
    public static void main(String[] args) throws Exception {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("1", "a");
        map.put("2", "b");
        System.out.println("Map contains : "+ map.toString());      
        JSONObject json = new JSONObject(map.toString());
        System.out.println("Json contains :: "+json);
    }
}

它工作正常,生产出了预期的产量

映射包含:{2=b,1=a}

Json包含::{2:b,1:a}

与最新组织绑定后。json。它抛出如下异常

org.json.JSONException: Expected a ':' after a key at 3 [character 4 line 1]

因此,为了克服这个问题,我用

private String convertToJSONString(Map<String, Object> hm) throws Exception {

     Set<String> keys = hm.keySet();
     JSONObject json = new JSONObject();
     for(String key : keys) {
         Object value = hm.get(key);
         json.put(key, value);
     }
     return json.toString();
}

我已经附上了older json versionnew json version的源代码链接

只是想知道为什么他们删除了这么好的解析?因为我现在正在做一些额外的工作

PS:我不确定我是否可以在这里讨论这个问题,因为它与调试或常规编程无关。但是仍然在这里发布,因为很多人会使用这个库,并且不会意识到最近的变化

如果你觉得这篇文章没用/不合适,请用评论告诉我,我会删除这篇文章


共 (0) 个答案