gpt4 book ai didi

java - 使用 Gson 构建一个 JSON 对象,其中值不应包含引号

转载 作者:行者123 更新时间:2023-12-02 13:04:48 25 4
gpt4 key购买 nike

我有一个如下所示的 JSON:

{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": [{
"key11": {
"key21": "value21"
}
}, {
"key12": "value12"
}]
}

并且需要获取 key4 中每个值的 JSON。

{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": {
"key11": {
"key21": "value21"
}
}
}

{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": {
"key12": "value12"
}
}

但我的输出如下:

{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "{\"key11\": {\"key21\": \"value21\"}}"
}

我正在使用 JSON 生成器并将 Java 对象转换为 JSON 对象。

public class BuildJson {
private String key1 = "value1";
private String key2 = "value2";
private String key3 = "value3";
private String key4;

public BuildJson(String value4) {
key4 = value4;
}

public String buildJson(BuildJson bj){
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String new_json = gson.toJson(bj);
return new_json;
}
}

初始化构造函数并调用buildJson方法。

List <String> key4_object; //holds list of values
for (String i : key4_object){
BuildJson bj = new BuildJson(i);
String new_json = bj.buildJson(bj);
System.out.print(gson.toJson(new_json));
}

由于 key4String 类型,因此它添加引号,并且值始终为 String

如何避免 key4 使用双引号?

最佳答案

不将其设为字符串。这是唯一的办法;不转义和双引号 String 将是错误且损坏的行为。

问题在于,在所有 3 种情况下,该键下的 JSON 都有不同的结构,因此不清楚它应该是什么类型。您只需将其设为 JsonElement key4:

public class BuildJson {
private String key1 = "value1";
private String key2 = "value2";
private String key3 = "value3";
private JsonElement key4;

public BuildJson(Object value4) {
key4 = new Gson().toJsonTree(value4);
}

public String buildJson(){
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String new_json = gson.toJson(this);
return new_json;
}
}

假设 key4_object 中的 String 是您想要的对象的 JSON,

List<String> key4_object = ...;
JsonParser parser = new JsonParser();
for (String i : key4_object){
BuildJson bj = new BuildJson(parser.parse(i));
String new_json = bj.buildJson();
System.out.print(gson.toJson(new_json));
}

关于java - 使用 Gson 构建一个 JSON 对象,其中值不应包含引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44196379/

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