【问题标题】:JSON Parsing in Android [duplicate]Android中的JSON解析[重复]
【发布时间】:2011-04-12 00:20:34
【问题描述】:

我在 Android 中的 JSON Parsing 上进行了很多搜索,但不太相信。实际上对 JSON 解析有一个简短的想法,但还不是很清楚。

如何在Application中实现JSON解析?

【问题讨论】:

    标签: java android json parsing


    【解决方案1】:

    这是一个非常简单的 JSON 字符串

    {"key1":"value1","key2":"value2"}
    

    为了获取它的值,请像这样使用JSONObject

    JSONObject json_obj=new JSONObject(your json string);
    String value1=json_obj.getString("key1");
    String value2=json_obj.getString("key2");
    

    这是一个稍微复杂的json字符串

    [{"key1":"value1","key2":"value2"},{"key1":"value1","key2":"value2"}]
    

    为了从中提取值,请使用JSONArray

    JSONArray jArray=new JSONArray(your json string);
    for(int i=0;i<(jArray.length());i++)
    {
        JSONObject json_obj=jArray.getJSONObject(i);
        String value1=json_obj.getString("key1");
        String value2=json_obj.getString("key2");
    }
    

    希望这能有所帮助............

    【讨论】:

      【解决方案2】:

      您还可以查看 Google 的 GSON 库 here。 GSON 用户指南here 提供了一些有用的示例来帮助您入门。我发现 GSON 简单而强大。

      【讨论】:

        【解决方案3】:

        见:http://developer.android.com/reference/org/json/package-summary.html

        首先,您将使用JSONArrayJSONObject

        简单示例:

            try {
                JSONObject json = new JSONObject(jsonString);
                int someInt = json.getInt("someInt");
                String someString = json.getString("someString");
            } catch (JSONException e) {
                Log.d(TAG, "Failed to load from JSON: " + e.getMessage());
            }
        

        【讨论】:

          【解决方案4】:

          您可以使用 SDK 中捆绑的 org.json 包。

          请看这里:http://developer.android.com/reference/org/json/JSONTokener.html

          【讨论】:

          • "JSONObject json = new JSONObject(jsonString);"
          • 上一行中的“(jsonString)”是干什么用的。
          • @david - 这是包含 JSON 编码信息的字符串。
          【解决方案5】:

          另一种选择:使用 Jackson。

          简单的用法;如果你有一个 POJO 要绑定:

            ObjectMapper mapper = new ObjectMapper(); // reusable
            MyClass value = mapper.readValue(source, MyClass.class); // source can be String, File, InputStream
            // back to JSON:
            String jsonString = mapper.writeValue(value);
          

          到地图:

            Map<?,?> map = mapper.readValue(source, Map.class);
          

          或树:(类似于默认的 Android org.json 包提供的)

            JsonNode treeRoot = mapper.readTree(source);
          

          更多示例请访问http://wiki.fasterxml.com/JacksonInFiveMinutes

          与其他软件包相比的好处是闪电般的速度;非常灵活和通用(POJO、地图/列表、json 树,甚至是流解析器),并且正在积极开发中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-04
            • 1970-01-01
            • 2018-04-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多