在 Java 中,有没有一种方法可以从 JSONObject 转到 JSONStringer,反之亦然?
In Java, is there a way I could go from JSONObject to JSONStringer, or vice versa?
对于如何绕过 JSONStringer class 的一些核心限制,我有点困惑。我知道 JSONStringer 是为了将 JSON 链接在一起而不是完全形成它,但是如果一个函数只有 returns 一个 JSONStringer,我发现我的手很紧。我想执行以下操作之一--
附加到现有结构 -- 见下文。第一个顶级 object(),其中所有 keys/values 和 endObject() 都在一个方法的范围内,那么我怎么能在事后修改 JSONStringer 呢?尝试添加第二个 obect() 得到一个 JSONException: Misplaced object.
JSONStringer json = new JSONStringer();
json.object();
json.key("stuff").value("1")
.key("name").value("2")
.key("type_name").value("3")
.key("type").value("4");
json.endObject();
json.object().key("hi").value("hi2").endObject();
修改现有结构,I.E.从方法返回后,在上面的 json
中添加另一个键。
从任意JSON创建一个JSON纵梁。我知道这就是 JSONObject 的用途,但令人沮丧的是无法在两者之间移动,尤其是当两者都相当于 String 的花哨结构化包装器时!
也许有更好的解决方案,但至少你有两个选择:
1.after 在调用 JSONString.endObject();
的方法中构建 json 对象,您可以使用 JSONObject
class添加其他 key/values 或修改现有的:
JSONStringer json = new JSONStringer();
json.object();
json.key("stuff").value("1")
.key("name").value("2")
.key("type_name").value("3")
.key("type").value("4");
json.endObject();
//after calling the method which returns a jsonobject like above:
JSONObject jo=new JSONObject(json.toString());
jo.put("hi", "hi2");
2.don不要在您的方法中调用 endObject()
并在所有操作之后调用:
public JSONStringer build() {
JSONStringer json = new JSONStringer();
json.object();
json.key("stuff").value("1")
.key("name").value("2")
.key("type_name").value("3")
.key("type").value("4");
return json ;
}
//in the other place when calling above method, say:
JSONStringer json=build();
json.key("hi").value("hi2");
json.endObject();
System.out.println(json.toString());
对于如何绕过 JSONStringer class 的一些核心限制,我有点困惑。我知道 JSONStringer 是为了将 JSON 链接在一起而不是完全形成它,但是如果一个函数只有 returns 一个 JSONStringer,我发现我的手很紧。我想执行以下操作之一--
附加到现有结构 -- 见下文。第一个顶级 object(),其中所有 keys/values 和 endObject() 都在一个方法的范围内,那么我怎么能在事后修改 JSONStringer 呢?尝试添加第二个 obect() 得到一个 JSONException: Misplaced object.
JSONStringer json = new JSONStringer(); json.object(); json.key("stuff").value("1") .key("name").value("2") .key("type_name").value("3") .key("type").value("4"); json.endObject(); json.object().key("hi").value("hi2").endObject();
修改现有结构,I.E.从方法返回后,在上面的
json
中添加另一个键。从任意JSON创建一个JSON纵梁。我知道这就是 JSONObject 的用途,但令人沮丧的是无法在两者之间移动,尤其是当两者都相当于 String 的花哨结构化包装器时!
也许有更好的解决方案,但至少你有两个选择:
1.after 在调用 JSONString.endObject();
的方法中构建 json 对象,您可以使用 JSONObject
class添加其他 key/values 或修改现有的:
JSONStringer json = new JSONStringer();
json.object();
json.key("stuff").value("1")
.key("name").value("2")
.key("type_name").value("3")
.key("type").value("4");
json.endObject();
//after calling the method which returns a jsonobject like above:
JSONObject jo=new JSONObject(json.toString());
jo.put("hi", "hi2");
2.don不要在您的方法中调用 endObject()
并在所有操作之后调用:
public JSONStringer build() {
JSONStringer json = new JSONStringer();
json.object();
json.key("stuff").value("1")
.key("name").value("2")
.key("type_name").value("3")
.key("type").value("4");
return json ;
}
//in the other place when calling above method, say:
JSONStringer json=build();
json.key("hi").value("hi2");
json.endObject();
System.out.println(json.toString());