簡體   English   中英

Java JSON解析數組

[英]Java JSON parse array

我正在使用以下庫來解析對象:

{"name": "web", "services": []}

和下面的代碼

import com.json.parsers.JSONParser;


JSONParser parser = new JSONParser();
Object obj = parser.parseJson(stringJson);

當陣列服務為空時,顯示以下錯誤

@Key-Heirarchy::root/services[0]/   @Key::  Value is expected but found empty...@Position::29

如果數組服務有一個元素,一切正常

{"name": "web", "services": ["one"]}

我怎樣才能解決這個問題?

謝謝

嘗試使用org.json.simple.parser.JSONParser東西:

JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(stringJson);

現在訪問字段,您可以執行以下操作:

JSONObject name = jsonObject.get("name"); //gives you 'web'

services是JSONArray,因此請在JSONArray中獲取。 像這樣:

JSONArray services = jsonObject.get("services");

現在,您也可以遍歷此services JSONArray。

Iterator<JSONObject> iterator = services.iterator();
// iterate through json array
 while (iterator.hasNext()) {
   // do something. Fetch fields in services array.
 }

希望這能解決您的問題。

為什么需要解析器? 嘗試這個:-

String stringJson = "{\"name\": \"web\", \"services\": []}";
JSONObject obj = JSONObject.fromObject(stringJson);
System.out.println(obj);
System.out.println(obj.get("name"));
System.out.println(obj.get("services"));
JSONArray arr = obj.getJSONArray("services");
System.out.println(arr.size());

我用https://github.com/ralfstx/minimal-json解決問題

讀取JSON

從Reader或String讀取JSON對象或數組:

JsonObject jsonObject = JsonObject.readFrom( jsonString );
JsonArray jsonArray = JsonArray.readFrom( jsonReader );

訪問JSON對象的內容:

String name = jsonObject.get( "name" ).asString();
int age = jsonObject.get( "age" ).asInt(); // asLong(), asFloat(), asDouble(), ...

訪問JSON數組的內容:

String name = jsonArray.get( 0 ).asString();
int age = jsonArray.get( 1 ).asInt(); // asLong(), asFloat(), asDouble(), ...

暫無
暫無

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

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