从 JSON 字段中检索值 [重复]
Posted
技术标签:
【中文标题】从 JSON 字段中检索值 [重复]【英文标题】:Retrieve values from JSON fields [duplicate] 【发布时间】:2018-12-31 23:38:51 【问题描述】:我试图检索参数“位置”及其 X 和 Y。
int npcId = reader.get("npcId").getAsInt();
int x = reader.get("position").getAsInt();
int y = reader.get("position").getAsInt();
int z = 0;
来自此输入,即 JSON
"npcId": 414,
"position":
"x": 3443,
"y": 3536,
"z": 0
,
"facing": "WEST",
"radius": 13
例如int x = reader.get("position.X").getAsInt();
(这显然行不通,但你明白了。)
【问题讨论】:
可能类似于.get("position").get("x").getAsInt()
什么是reader
?
@JonasW.:这个问题不是这个问题的正确欺骗目标。如果问题标记不正确,请修复标记。
@JonasW.:这个问题不是不可挽救的。为了通过一切手段关闭它而对它进行欺骗是滥用你的 Mjölnir 特权。
@JonasW。但是标记为骗子对将来偶然发现这个问题的任何人都没有帮助。如果它以正常方式关闭,至少它会在之后得到房间,而不是欺骗 AFAIK 的情况
【参考方案1】:
正如我从您的帖子中看到的,您想要解析 JSON 输入并检索某些字段的值。
这里是一个例子,如果你想创建一个与你的 JSON 结构相对应的 Java 类。然后,您从 JSON 构建一个对象并直接检索该字段。 https://www.journaldev.com/2321/gson-example-tutorial-parse-json
我这样做的另一种方法是从您的 JSON 构建地图,并对其进行迭代。在这种情况下,您应该知道您的 JSON 结构。这是一个例子, https://***.com/a/12296567/4587961
1) 将输入字符串解析为 JSON 对象。
2) 遍历 JSON 对象并找到您需要的字段。
3) 检索它们的值。
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
Gson gson = new Gson();
String json = "\"k1\":\"v1\",\"k2\":\"v2\"";//You input String
Map<String,Object> map = new HashMap<String,Object>();
//Check if map is not null and instance of Map.
map = (Map<String,Object>) gson.fromJson(json, map.getClass());
Object position = map.get("position");
//Check if position is not null and instance of Map. You can create a method to do this logic.
Map<String, Object> positionMap = (Map) position;
Object X = positionMap.get("x");
//Please, continue yourself.
您也可以使用其他库,例如 Jackson。这是你的作业,尝试更多地了解 JSON,并尝试不同的库,以及指向你的 github 帐户的链接以及示例,以便其他人也可以学习。
【讨论】:
感谢您的回复,这是我在这里的第一篇文章,我不太明白这个网站是如何工作的=\我还是不太明白你的意思,它是JSON,如果我发布更多代码你能帮我改正吗?谢谢。 public static JsonLoader parse() return new JsonLoader() @Override public void load(JsonObject reader, Gson builder) int npcId = reader.get("npcId").getAsInt(); int x = reader.get("position").getAsInt(); int y = reader.get("position").getAsInt();整数 z = 0; if(reader.has("z")) z = reader.get("z").getAsInt(); //Spawn npc World.getNpcAddQueue().add(new NPC(npcId, new Position(x, y, z))); @Mike 如果您觉得显示更多代码有帮助,请在您的问题中这样做。不在 cmets 中。以上是关于从 JSON 字段中检索值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章