Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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 未正确创建JSONObject(可能是JSON格式错误?)_Java_Android_Json - Fatal编程技术网

Java 未正确创建JSONObject(可能是JSON格式错误?)

Java 未正确创建JSONObject(可能是JSON格式错误?),java,android,json,Java,Android,Json,我得到了这个JSON字符串: [ { "id": 135, "date": "2013-08-30 19:00:29", "timestamp": "2013-08-30 19:00:29", "lat": "54.328274", "long": "-2.747215", "strap": "annual International Festival of Street Arts", "link": "http://dev.website

我得到了这个JSON字符串:

[
{
    "id": 135,
    "date": "2013-08-30 19:00:29",
    "timestamp": "2013-08-30 19:00:29",
    "lat": "54.328274",
    "long": "-2.747215",
    "strap": "annual International Festival of Street Arts",
    "link": "http://dev.website.co.uk//?p=135",
    "title": "Title"
}
]
我确信这是正确的JSON语法(在iOS应用程序中工作正常),但是当解析到JSONObject时会捕获错误。爪哇:

public static JSONObject getJSONfromURL(String url){

    //initialize
    InputStream is = null;   
    String result = "";   
    JSONObject jArray = null;

    //http post
    try {

        HttpClient httpclient = new DefaultHttpClient();   
        HttpPost httppost = new HttpPost(url);    
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();

        is = entity.getContent();    

    } catch (Exception e) {
        Log.e("log_tag", "Error in http connection "+e.toString());   
    }
    //convert response to string

    try {

        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);  
        StringBuilder sb = new StringBuilder();   
        String line = null;

        while ((line = reader.readLine()) != null) {   
            sb.append(line + "\n");
        }

        is.close();
        result=sb.toString();

    } catch (Exception e) {    
        Log.e("log_tag", "Error converting result "+e.toString());
    }
    //try parse the string to a JSON object

    try {
        Log.d("log_tag", "jresult: " + result + "finish");
        jArray = new JSONObject(result);

    } catch (JSONException e) {
        Log.e("log_tag", "Error parsing data "+e.toString());
    }
    return jArray;
}

JSON中的某个地方有错误吗?

它是一个数组,因此需要执行“new JSONArray()”而不是“new JSONObject()”

它是一个数组,因此需要执行“new JSONArray()”而不是“new JSONObject()”

[
表示JSON数组节点

{
表示json对象节点

    JSONArray jArray  = new JSONArray(result);
    return jArray;  

您还可以使用一个try块而不是多个try块。

[
表示json数组节点

{
表示json对象节点

    JSONArray jArray  = new JSONArray(result);
    return jArray;  

此外,您还可以使用一个try块而不是多个try块。

当json字符串以
[
开头时,它将被视为
JSONArray
您需要执行
new JSONArray()

当json字符串以
[
开头时,它将被视为
JSONArray
您需要执行
new JSONArray()

谢谢!这里有最好的解释,所以谢谢!当它允许时我会接受:)@joshbooth不客气。你也可以有一个try块和基于异常层次的多个catch块谢谢!这里有最好的解释,所以谢谢!当它允许时我会接受:)@joshbooth不客气。你也可以有一个try块和具有基于异常层次结构的多个catch块