gpt4 book ai didi

java - 如何正确地将 java 对象转换为 Json(嵌套)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:02 25 4
gpt4 key购买 nike

好的,我想得到的输出是这样的:

  {
"id": 460,
"position": {
"x": 3078,
"y": 3251,
"z": 0
},
"random-walk": true,
"walk-radius": 1
},

但我目前得到的是:

{
"id": 460,
"position": "{
"x": 3078,
"y": 3251,
"z": 0
}",
"random-walk": true,
"walk-radius": 0
},

问题是我试图转换为 json 的位置对象。我试过的代码:

Path path = Paths.get("./npcs.json");
File file = path.toFile();
file.getParentFile().setWritable(true);

if (!file.getParentFile().exists()) {
try {
file.getParentFile().mkdirs();
} catch (SecurityException e) {
System.out.println("Unable to create directory for donator data!");
}
}

try (FileWriter writer = new FileWriter(file)) {

Gson builder = new GsonBuilder().setPrettyPrinting().create();
JsonObject object = new JsonObject();

Position pos = new Position(mob.absX, mob.absY, mob.heightLevel);
object.addProperty("id", mob.npcId);
object.addProperty("position", builder.toJson(pos));
object.addProperty("random-walk", mob.randomWalk);
object.addProperty("walk-radius", mob.walkingType);

writer.write(builder.toJson(object));
writer.close();

} catch (Exception e) {
System.out.println("Something went wrong with saving for mob !");
e.printStackTrace();
}

有人知道如何获得第一个结果吗?所以没有双引号。

最佳答案

使用这个

object.add("position", new Gson().toJsonTree(pos));

代替

object.addProperty("position", builder.toJson(pos));

结果应该是这样的:

"position": {
"x": 10,
"y": 50
},

关于java - 如何正确地将 java 对象转换为 Json(嵌套),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35367974/

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