【问题标题】:Changing library from org.json to Jackson for parsing JSON将库从 org.json 更改为 Jackson 以解析 JSON
【发布时间】:2012-09-10 16:16:23
【问题描述】:

我一直在使用 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 服务。上面的数据只是为了说明,我的实际数据要大得多,所以我想要最好的性能。

【问题讨论】:

    标签: java android json parsing jackson


    【解决方案1】:

    通常的方法是,您定义一个结构与 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.
    

    也可以像json.org那样使用Jackson,所谓的树模型;为此,您可以查看教程。当数据没有良好的对象结构(即没有设计为易于从 OO 语言访问)或您只需要大型文档中的小 sn-p 时,它会更好地工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多