在Java中读取/解析以下JSON字符串时遇到问题。
代码:
try{
json = new JSONObject(result);
//json now looks like this :-
// {'header': '[{"doc_no": "DN00001","stage":"P"}]','section':'[{"upper":100,"lower":1]'}
if (json != null){
// this line is throwing an exception!!
JSONObject header = new JSONObject("header");
}catch(JSONException e){
// Error Message
}
我也试过这个:
JSONArray header = json.getJSONArray("header");
但仍然抛出一些例外。
我错过了什么?
答案 0 :(得分:4)
这不是有效的JSON文件。
'header': '[{"doc_no": "DN00001","stage":"P"}]'
数组不能被'
包围
字符串应该用"
而不是'
阅读有关JSON语法的http://json.org/。
答案 1 :(得分:1)
JSONObject header = new JSONObject("header");
您的意思是从现有对象中获取“标题”字段吗?
JSONObject header = json.getJSONObject("header");
但从你的评论判断
// {'header': '[{"doc_no": "DN00001","stage":"P"}]','section':'[{"upper":100,"lower":1]'}
你打算将“header”作为一个数组(不是一个对象),但数据将它作为一个String(看起来像一个数组),所以你可能需要修复JSON和Java代码。 / p>
答案 2 :(得分:1)
这里老兄拿这个代码。如果你想从中获取JSONObject,修复你的JSON字符串
public static void main(String[] args) throws JSONException {
String result = "{'header': '[{\"doc_no\": \"DN00001\",\"stage\":\"P\"}]','section':'[{\"upper\":100,\"lower\":1]'}";
JSONObject json = new JSONObject(result);
// json now looks like this :-
//
if (json != null) {
String header = json.getString("header");
System.out.println(header);
}
}
你怎么了?几件事:
您的JSON字符串都是非法的。感谢解析器能够忍受你。它应该是
{
"header": [{"doc_no": "DN00001","stage":"P"}],
"section":[{"upper":100,"lower":1]
}
它不会单独解决您的问题。既然您想获得JSONObject
,但是您提供了JSONArray
(为什么要这样做?)。所以删除那些方括号。
仍然不高兴。你看到你正在尝试创建一个新的JSONObject
做(明显)new JSONObject("header")
使用字符串taht不是JSON。 9,期待它不会抛出错误?多么残忍。)另外你想要get
而不是set
。因此,请使用json.getXXX("header")
,其中XXX可以是String
,JSONObject
或JSONArray
等等。
答案 3 :(得分:0)
JSONObject header = new JSONObject("header");
您不是指来自json
的>强>标题,而不是创建新的JSONObject
吗?
,如
JSONObject header = json.get("header");