gpt4 book ai didi

java - 在Java中,有没有办法可以从JSONObject转到JSONStringer,反之亦然?

转载 作者:行者123 更新时间:2023-11-30 08:13:47 25 4
gpt4 key购买 nike

我对如何解决 JSONStringer 类的一些核心限制感到有点困惑。我知道 JSONStringer 的目的是将 JSON 链接在一起,而不是创建完整的 JSONStringer,但在函数仅返回 JSONStringer 的情况下,我发现我的手很束缚。我想执行以下操作之一--

  1. 附加到现有结构 - 见下文。第一个顶级 object()、其中的所有键/值和 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();
  2. 修改现有结构,即从方法返回后,在上面的 json 中添加另一个键。

  3. 从任意 JSON 创建 JSONStringer。我知道这就是 JSONObject 的用途,但令人沮丧的是,无法在两者之间移动,尤其是当两者都相当于字符串的奇特结构化包装器时!

最佳答案

也许有更好的解决方案,但至少你有两个选择:

1.在调用 JSONString.endObject(); 的方法中构建 json 对象后,您可以使用 JSONObject 类添加其他键/值或修改现有值:

    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.不要在方法内部调用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());

关于java - 在Java中,有没有办法可以从JSONObject转到JSONStringer,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29956047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com