1

我有 Json 字符串,其中包含“键”:“值”对,我需要使用 Java 和导入 org.json 知道该字符串的键。我尝试使用迭代器,但最后第一对键打印。

例如字符串:

{
   "firstName": "sam",
   "lastName": "Smith",
   "address": {
       "streetAddress": "somestreet",
       "city": "somecity",
       "postalCode": 101101
   },
   "phoneNumbers": [
       "812 123-1234",
       "916 123-4567"
   ]
}

我想打印:“ firstName lastName address phoneNumbers ”。但我有:“姓氏地址电话号码名字”

 JSONObject JO = new JSONObject(JsonString);
    Iterator<String> It = JO.keys();

       while (It.hasNext()){        
       System.out.println(It.next());
       }
4

2 回答 2

2

JavaDoc

JSONObject 是名称/值对的无序集合。

如果您想订购钥匙,您必须 1) 将它们放在一个列表中,并且 2) 根据您的需要订购该列表。请记住,这是数据的键/值表示 - 元素的顺序无关紧要。

于 2012-07-07T04:47:50.817 回答
2

使用 json-simple 您可以使用以下代码执行此操作

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class TestJsonKeys {
    public static void main(String[] args) throws ParseException {
        final String jsonText = "{\n" + "   \"firstName\": \"sam\",\n" + "   \"lastName\": \"Smith\",\n"
                + "   \"address\": {\n" + "       \"streetAddress\": \"somestreet\",\n"
                + "       \"city\": \"somecity\",\n" + "       \"postalCode\": 101101\n" + "   },\n"
                + "   \"phoneNumbers\": [\n" + "       \"812 123-1234\",\n" + "       \"916 123-4567\"\n" + "   ]\n"
                + "}";
        JSONParser parser = new JSONParser();
        JSONObject json = (JSONObject) parser.parse(jsonText);
        System.out.println(json.keySet());
    }
}
于 2012-07-07T04:49:39.267 回答