簡體   English   中英

將庫從org.json更改為Jackson以解析JSON

[英]Changing library from org.json to Jackson for parsing JSON

我一直在使用stock org.json庫,對此很熟悉。 現在,出於性能原因,我想使用Jackson庫,但是在適應看起來非常不同的框架方面卻很掙扎。 使用以下JSON:

{"result":[[{"usUserName":"FRED","usActive":true},{"usUserName":"JIM","usActive":true},{"usUserName":"DAVID","usActive":true}]]}

我使用org.json解析如下:

try {
    JSONArray jsonRecordset = response.getJSONArray("result").getJSONArray(0);
    JSONObject jsonFirstRecord = jsonRecordset.getJSONObject(0);
    Log.i("myloginfo", jsonFirstRecord.getString("usUserName"));
} catch (JSONException e) {
    e.printStackTrace();
}

我想和Jackson一起復制,但看不到要去的地方,因為看起來很不一樣。 我的JSON來自我無法控制的Web服務。 上面的數據僅用於說明,我的實際數據要大得多,因此我需要最佳性能。

通常的方法是,您定義具有與JSON兼容結構的Java類(或多個類),而不是手動對事物進行切片和切塊。 像這樣:

public class Response {
  public UserInfo[][] result;
}
public class UserInfo {
  public String usUserName;
  public boolean usActive;
}

ObjectMapper mapper = new ObjectMapper(); // must reuse for good performance
Response resp = mapper.readValue(jsonInput, Response.class);
// and use 'resp' however you want, now has the expected data.

也可以使用傑克遜(Jackson)和json.org相同的方式使用所謂的樹模型(Tree Model)。 為此,您可以查看教程。 當數據沒有良好的對象結構時(即,不是為了從OO語言輕松訪問而設計的),或者在大型文檔中只需要一小段代碼時,它會更好地工作。

暫無
暫無

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

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