Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无键解析Json数组_Java_Android_Arrays_Json_Parsing - Fatal编程技术网

Java 无键解析Json数组

Java 无键解析Json数组,java,android,arrays,json,parsing,Java,Android,Arrays,Json,Parsing,我想从服务器解析数组,但无法获取数组 以下是成功获取的jsonString: { "status":"OK", "message":"this is your start and end coordinates", "data":"{\"start\":[\"35.778763\",\"51.427360\"],\"end\":[\"35.768779, 51.415002\"]}" } 我希望从data arraylist获得双值: //try/catch Log.d

我想从服务器解析数组,但无法获取数组 以下是成功获取的jsonString:

{
    "status":"OK",
    "message":"this is your start and end coordinates",
    "data":"{\"start\":[\"35.778763\",\"51.427360\"],\"end\":[\"35.768779, 51.415002\"]}"
}
我希望从data arraylist获得双值:

//try/catch
Log.d(TAG, "Passes here");          
JSONObject jObject = new JSONObject(jsonString);

JSONArray jData = jObject.getJSONArray("data");
Log.d(TAG, "Not PAASING HERE !!! ");

JSONArray jArrayStart = (JSONArray) jData.get(0);
JSONArray jArrayEnd =  (JSONArray) jData.get(1);

latitudeStart =  (Double) jArrayStart.get(0);
longtitudeStart = (Double) jArrayEnd.get(1);
latitudeEnd = (Double) jArrayEnd.get(0);
longtitudeEnd = (Double) jArrayEnd.get(1);

data
的值不是
JSONArray
its
JSONObject

解释
JSONObject
将被
{}


JSONArray
将被
[]
包围
数据的值
不是
JSONArray
JSONObject

解释
JSONObject
将被
{}


JSONArray
将被
[]

包围。数据不是数组,它是一个json对象,因此您无法以当前方式访问它。 如果您想从json对象“数据”中提取起始数组,请使用以下命令 jObject.optJSONObject(“数据”).optJSONArray(“开始”)

同样的东西也可以用于检索“end”json数组


然后使用optJSONObject()和/或optString()API从json数组中检索所需的值。

数据不是数组,而是json对象,因此您无法以当前方式访问它。 如果您想从json对象“数据”中提取起始数组,请使用以下命令 jObject.optJSONObject(“数据”).optJSONArray(“开始”)

同样的东西也可以用于检索“end”json数组


然后使用optJSONObject()和/或optString()API从json数组中检索所需的值。

您试图解析的是一个
字符串

{
    "status": "OK",
    "message": "this is your start and end coordinates",
    "data": "{\"start\":[\"35.778763\",\"51.427360\"],\"end\":[\"35.768779, 51.415002\"]}"
}
所以它是这样工作的:

//first, retrieve the data from the response JSON Object from the server
JSONObject response = new JSONObject(jsonString);
String status = response.getString("status");
String message = response.getString("message");
//Note this: "data" is a string as well, but we'll have to parse that later.
String data = response.getString("data");

//get the doubles from the arrays from the "data" component.
JSONObject dataObject = new JSONObject(data);
JSONArray start = dataObject.getJSONArray("start");
JSONArray end = dataObject.getJSONArray("end");

for (int i = 0; i < start.length(); i++) {
    String value = start.getString(i);
    //do something with the start String (parse to double first)
}
for (int i = 0; i < end.length(); i++) {
    String value = end.getString(i);
    //do something with end String (parse to double first)
}
{
    "status": "OK",
    "message": "this is your start and end coordinates",
    "data": {
        "start": [
            "35.778763",
            "51.427360"
        ],
        "end": [
            "35.768779", //note that in your example, this quote is missing (first quote on next line too)
            "51.415002"
        ]
    }
}

您试图解析的是一个
字符串

{
    "status": "OK",
    "message": "this is your start and end coordinates",
    "data": "{\"start\":[\"35.778763\",\"51.427360\"],\"end\":[\"35.768779, 51.415002\"]}"
}
所以它是这样工作的:

//first, retrieve the data from the response JSON Object from the server
JSONObject response = new JSONObject(jsonString);
String status = response.getString("status");
String message = response.getString("message");
//Note this: "data" is a string as well, but we'll have to parse that later.
String data = response.getString("data");

//get the doubles from the arrays from the "data" component.
JSONObject dataObject = new JSONObject(data);
JSONArray start = dataObject.getJSONArray("start");
JSONArray end = dataObject.getJSONArray("end");

for (int i = 0; i < start.length(); i++) {
    String value = start.getString(i);
    //do something with the start String (parse to double first)
}
for (int i = 0; i < end.length(); i++) {
    String value = end.getString(i);
    //do something with end String (parse to double first)
}
{
    "status": "OK",
    "message": "this is your start and end coordinates",
    "data": {
        "start": [
            "35.778763",
            "51.427360"
        ],
        "end": [
            "35.768779", //note that in your example, this quote is missing (first quote on next line too)
            "51.415002"
        ]
    }
}

以下代码仍然没有成功:“JSONObject jObject=newjsonobject(jsonString);JSONObject jData=jObject.getJSONObject(“数据”);JSONArray jArrayStart=jData.getJSONArray(“start”);JSONArray jArrayEnd=jData.getJSONArray(“end”);latitudeStart=(双精度)jArrayStart.get(0);LongtudityStart=(双精度)jArrayEnd.get(1);latitudeEnd=(双精度)jArrayEnd.get(0);LongtudentEnd=(双)jArrayEnd.get(1);'以下代码仍然没有成功:“JSONObject jObject=newjsonobject(jsonString);JSONObject jData=jObject.getJSONObject(“数据”);JSONArray jArrayStart=jData.getJSONArray(“start”);JSONArray jArrayEnd=jData.getJSONArray(“end”);latitudeStart=(双精度)jArrayStart.get(0);LongtudityStart=(双精度)jArrayEnd.get(1);latitudeEnd=(双精度)jArrayEnd.get(0);LongtudentEnd=(双)jArrayEnd.get(1);'谢谢,问题是提到的结尾缺少QOUTING和条目的字符串类型谢谢,问题是提到的结尾缺少QOUTING和条目的字符串类型