1

「key」:「value」のペアを含むJson文字列があり、Javaを使用してorg.jsonをインポートすることでこの文字列のキーを知る必要があります。イテレータを使おうとしましたが、最後に最初のペアキーが印刷されます。

たとえば、文字列:

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

印刷したい: "firstName lastNameaddressphoneNumbers"。しかし、私は持っています:「lastNameアドレスphoneNumbersfirstName」

 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 に答える