java - JSON 在解析时不返回任何输出

标签 java android json parsing

<分区>

我在 JSON 方面经验不多,所以这个问题可能有点微不足道,但我无法解决这个问题。 我有一个简单的 JSON 字符串,例如:

["{\"__type:\"GeoPoint\",\"latitude\":51.165691,\"longitude\":10.451526}","{\"__type:\"GeoPoint\",\"latitude\":20.593684,\"longitude\":78.96288}"]

我想解析 JSON 并获取不同变量中的值。我已经实现了下面的代码 fragment ,但它没有按预期工作。解析 JSON 后我看不到任何日志。 代码:

String jsonString = arg0.get(i).get(0).getJSONArray("tripPoints").toString();
                                Log.e("Json String", jsonString);
                                 JSONArray jsonarray;
                                try {
                                    jsonarray = new JSONArray(jsonString);
                                    for(int j=0; j<jsonarray.length(); j++){
                                        JSONObject obj = jsonarray.getJSONObject(j);

                                        String latitude = obj.getString("latitude");
                                        String longitude = obj.getString("longitude");

                                        Log.e("triplatitude", latitude);
                                        Log.e("triplongitude", longitude);
                                    }   
                                } catch (JSONException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }

我应该怎么做才能从 JSON 中获取数据?我哪里出错了?

最佳答案

您的 JSON 数组不包含有效的 JSON 对象。删除 \ 转义字符,你最终得到这个,它不是有效的 JSON:

[
    "{"__type:"GeoPoint","latitude":51.165691,"longitude":10.451526}",
    "{"__type:"GeoPoint","latitude":20.593684,"longitude":78.96288}"
]

先尝试修复 JSON,然后看看是否能解决您的问题。您可以使用 JSONLint以确保 JSON 有效。

基本上你的 JSON 应该是这样的:

[
    {
        "__type": "GeoPoint",
        "latitude": 51.165691,
        "longitude": 10.451526
    },
    {
        "__type": "GeoPoint",
        "latitude": 20.593684,
        "longitude": 78.96288
    }
]

编辑 1

似乎有点困惑。问题在于以下是 JSON 术语中的字符串:

"{"__type:"GeoPoint","latitude":51.165691,"longitude":10.451526}"

我们需要一个对象,所以我们从开始和结束中删除 " 将其变成以下内容:

{"__type:"GeoPoint","latitude":51.165691,"longitude":10.451526}

这是无效的 JSON。我们需要做的是在 __type 之后添加一个 "。现在它看起来像这样:

{"__type":"GeoPoint","latitude":51.165691,"longitude":10.451526}

它终于生效了。您需要找到一种在源头修复 JSON 的方法。 arg0 对象是什么,它从哪里获取数据?

编辑 2

如果您无法在源头修复 JSON,那么以下快速技巧应该适用于这种情况:

jsonString = jsonString.replace("__type", "__type\"")
        .replace("\"{", "{")
        .replace("}\"", "}")
        .replace("\\\"", "\"");

关于java - JSON 在解析时不返回任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27311083/

相关文章:

c# - 如何从JSON格式的DataSet中提取DataTable

java - hibernate - getCurrentSession - get 在没有 Activity 事务的情况下无效

java - 什么是初始化 block ?

android - 在 Android 中显示可滚动的小部件

android - CameraUpdateFactory.newLatLngBounds 一直不工作

c++ - libjson 是否支持 64 位 int 类型?

javascript - 在 Rails 应用程序中使用 json 对象的更好方法

java - 从文本文件中获取二维数组

java - OSGi 与 JPA : Service not starting although code seems ok

java - 平滑或逐渐删除 ListView 中的一行