从 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 字段中检索值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询以从逗号分隔的列中检索值[重复]

从 mysql 表中检索所有行,但首先将它们分组以删除重复

从 MySQL 数据库中检索文本 [重复]

使用动态键检索 JSON 响应数据 [重复]

从服务中检索的日期格式 [重复]

在 MySQL JSON 字段中的数组中搜索值(Laravel/Lumen)[重复]