Java - 如何获取 JSON 数组中的对象值?

标签 java json

我有一个类似下面示例的 JSON,我正在尝试获取一些值,例如值。

results.shipper.id



{
    "results": [
        {
            "updated": false,
            "notification": false,
            "some_data": {
                "id": 15989,
                "pieces": 0,

            },
            "shipper": {
                "updated": false,
                "notification": false,
                "id": 1587,
                "parent": {
                    "updated": false
                },

我试图通过这种方式获得值(value):

    String test = shipmentData.getJSONObject("shipper").getString("id");

但它总是抛出异常。我认为,该异常是由于我没有通过“结果”数组访问值造成的。

我怎样才能轻松获得我需要的值(value)。

我试着找到一些助手(Gson、fast-json 等),但使用起来似乎相当复杂(我想使用 JSON 树来“即时”直接访问值或访问对象之类的值,这意味着.. Object.InnerObject.value )。

所以问题是我怎样才能正确地做到这一点?

感谢您的任何建议。

最佳答案

需要遍历JSON才能访问id:

JSONArray results = shipmentData.getJSONArray("results");
JSONObject first = results.getJSONObject(0);
JSONObject shipper = first.getJSONObject("shipper");
Integer id = shipper.getInt("id");

将整数解析为字符串:

String id = String.valueOf(shipper.getInt("id"));

关于Java - 如何获取 JSON 数组中的对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386344/

相关文章:

JSON 建模方法

java - 如何使用 do while 循环

java - 在java的静态上下文中是否有任何替代方法

angularjs - 使用来自node.js的angularjs中的json数据作为后端和sql数据库

ruby-on-rails - Django 相当于 rail respond_to

json - stream2es线程错误中的异常

java - Hibernate 查询比 MySQL 中的 native 查询慢

java - 这个方法jboolean(JNICALL *ExceptionCheck)(JNIEnv *env)在哪里定义的?

java - 当我不修改数组时出现 ConcurrentModificationException?

mysql - 如何使用 MySQL 或 R 获取 JSON 是否包含特定文本