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 version和new json version的源代码链接
只是想知道为什么他们删除了这么好的解析?因为我现在正在做一些额外的工作
PS:我不确定我是否可以在这里讨论这个问题,因为它与调试或常规编程无关。但是仍然在这里发布,因为很多人会使用这个库,并且不会意识到最近的变化
如果你觉得这篇文章没用/不合适,请用评论告诉我,我会删除这篇文章
共 (0) 个答案