簡體   English   中英

從json文件中打印值

[英]print values from json file

我正在使用以下代碼從文件中獲取JSON數據,目前我能夠實現JSON,但只能使用一個字符串。 我想將其解析為數組。 json文件是這樣的:

{
    "employee": [
        {
            "name": "joan",
            "lastname": "test",
            "age": 23
        },

我正在使用以下代碼來獲取數據,但我將其存儲在一個字符串中,我想打印一些數據

JSONObject jsonObject = (JSONObject) parser
                .parse(new FileReader("C:\\MockData\\Json\\js.txt"));

        JSONParser parser1 = new JSONParser();
        ContainerFactory containerFactory = new ContainerFactory() {
            public List<?> creatArrayContainer() {
                return new LinkedList<Object>();
            }

            public Map<?, ?> createObjectContainer() {
                return new LinkedHashMap<Object, Object>();
            }

        };

        Map<?, ?> json = (Map<?, ?>) parser1.parse(jsonObject.toJSONString(), containerFactory);

        Iterator<?> iter = json.entrySet().iterator();
        System.out.println("==iterate result==");

        while (iter.hasNext()) {
            Map.Entry entry = (Map.Entry) iter.next();

            System.out.println(entry.getKey() + "=>" + entry.getValue());

        }

這是輸出

employee=[{age=23, name=joan, lastname=test}, {age=22, name=Alex, lastname=avz}, {age=65, name=Dan, lastname=severn}]

在這里, entry.getValue()檢索了數組的一個串聯字符串 ,而while只運行了一次……但是我想在其上循環以獲取鍵值。 我應該怎么做? 例如,如果我想打印22歲的名字alex witn,該怎么辦?

注意 :文件可以更改,所以我不知道鍵(現在是它的名稱,但可以是firstName,我需要通用解決方案的任何其他字段)。

如果有一種方法可以使用其他解析器打開Im。

以下是您問題的完整解決方案。 使用此代碼,您可以將數據分解為每個員工,還可以分隔員工屬性。

 Set<String> keySet = jsonObject.keySet();
                Iterator keySetIterator = keySet.iterator();
                while(keySetIterator.hasNext()){
                    JSONArray array = (JSONArray)jsonObject.get(keySetIterator.next());

                        while(employeeKeySetIterator.hasNext()){
                            String employeeKey = employeeKeySetIterator.next().toString();
                            System.out.println(employeeKey + " : "+ employee.get(employeeKey));
                        }
                    }
                }

您需要將內部json字符串轉換為JSONArray

JSONArray array = (JSONArray)jsonObject.get("employee");
Iterator<JSONObject> iterator = array.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next().toString());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM