如何使用任何json库/ jar构造json对象

时间:2017-05-03 07:43:27

标签: java json

我只想构建像这样的JSON对象:

"Root":{
  "c1": "v1"
}

我尝试使用以下代码:

import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;


public class Exe {

    public static void main(String[] args) throws JSONException {
        JSONObject object = new JSONObject("ROOT");
        object.put("c1", "v1");
        System.out.println(object.toString());
    }
}

使用此代码,我得到以下异常:

Exception in thread "main" org.codehaus.jettison.json.JSONException: A JSONObject text must begin with '{' at character 1 of ROOT

我使用的是codehaus API,但我没有找到解决方案,所以请你帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

您需要创建JSONObject,然后将"Root": value键值对添加到对象。接受具有"Root"的String的构造函数需要一个完整的JSON对象作为String。

JSONObject requestedObject = new JSONObject();
JSONObject innerValue = new JSONObject();
innerValue.put("c1", "v1");
requestedObject.put("Root", innerValue);
System.out.println(requestedObject);

已确认产生:

{"Root":{"c1":"v1"}}

作为一个重要的附加说明,您请求的JSON对象不是有效的JSON对象。如果您感兴趣,可以使用JSON lint tool检查有效的JSON。有效对象如下所示。

{
    "Root":{
        "c1": "v1"
    }
}

这是一个快速片段,用于确认有关构造函数的语句。

JSONObject strConstr = new JSONObject("{\"Root\":{\"c1\":\"v1\"}}");
System.out.println(strConstr);

已确认产生:

{"Root":{"c1":"v1"}}