【问题标题】:java/jsonsimple - use key to get value from a jsonarrayjava/jsonsimple - 使用 key 从 jsonarray 获取值
【发布时间】:2011-12-05 13:07:27
【问题描述】:

我有以下示例 json 输出表单 java/jsonsimple。

JSONArray 是:

[{"dd1":{"actionType":"Dept","collegeID":""}},{"dd2":{"actionType":"Dept","collegeID":""}}] 

我试图弄清楚如何通过使用“dd1”而不是 ndx 来获取“dd1”键的值。

基本上,我希望能够测试给定的“键”以查看它是否在数组中,并带有值。

JSONArray 的文档,允许 foo.get(1),但不允许 foo.get("dd1")

谢谢

ps.

我尝试将上面的内容插入到 JSONObject 中,然后执行 foo.get("dd1") 但我没有得到值。

问题似乎归结为弄清楚如何获取 [] 数组中的 dict。

doing something like foo.get(1).get("dd1") doesn't work...

谢谢

【问题讨论】:

    标签: java json key json-simple


    【解决方案1】:

    您有一个数组将您的字典包装在您的 JSON 输入中,因此您必须先获取字典,例如:

    foo.get(1).get("dd1");
    

    但您可以将 JSON 更改为简单的字典,如下所示:

    {
       "dd1": {"actionType":"Dept","collegeID":""},
       "dd2": {"actionType":"Dept","collegeID":""}
    }
    

    然后你就可以做到:

    foo.get("dd1");
    

    【讨论】:

    • 嗨。 foo 是一个 JSONArray。如果我执行 foo.get(1),我会得到数组的第二个元素,它具有“dd2”.. 所以我需要一种方法来以某种方式从数组中获取字典。
    • 哦,那你需要foo.get(0); ;-) foo.get(0) 会得到第一个字典,foo.get(0).get("dd1") 会得到内部字典。
    • hi eljunior.... foo.get(0) 或 foo.get(1) 都不允许我获取初始字典。如果我做一个 foo.get(0) 我有第一个数组/字典元素,它有“dd1”。然后我可以对返回的项目执行 get("dd1") .. 但这没用,因为我已经有了 "dd1" 项目。我想要完成的是能够直接执行 .get("dd1") 这样我就可以确定密钥是否存在,并获取相关的值......所以如果你知道一种方法来转换什么我有,然后就可以做 abc.get("dd1").. 我是游戏!谢谢
    • 它是这样的:对于输入[{"one":1},{"two":2}],如果你输入foo.get(0),你有第一个字典:{"one":1}。如果你这样做:foo.get(0).get("one") 你将拥有1。所以,如果你想做 foo.get("dd1") 并获取字典,你的输入必须是:{"dd1":{"dd1":{"actionType":"Dept","collegeID":""}}},但是你会复制信息而没有实质性的收益(除非你真正的字典更多比你发布的复杂)。只有字典允许按键访问元素。希望对您有所帮助!
    • 这对我不起作用。例如我有; JSONArray arr = [{"01":"key1"},{"02":"key2"},{"03":"key3"}]arr.get("01") 抛出错误。
    【解决方案2】:

    您正在混淆 json 数组和 json 对象。使用 foo.get(1) 您将检索 JSON 对象,其中包含字段“dd1” - 然后您可以使用 get("dd1")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 2017-05-12
      • 2014-09-29
      • 2012-04-15
      • 2017-03-09
      • 2016-06-13
      • 2016-05-24
      相关资源
      最近更新 更多