JSONArray,并非所有数据都是

时间:2014-09-21 11:06:27

标签: android json arrays

看看我是否可以提供帮助。 android有这段代码:

String data;
        data=httpGetData("http://192.168.1.15/CodigoPHP/prueba/consultarUsuario.php");
        if(data.length()>1)
            ja=new JSONArray(data);
        Toast.makeText(getApplicationContext(), "esto da:"+data,Toast.LENGTH_LONG).show();

    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(getApplicationContext(), "Error recuperando la informacion del servidor, verifique su conexion a internet y vuelva a intentarlo.",Toast.LENGTH_LONG).show();

    }
    try{

        for(int i=1; i<ja.length();i++) {
            british.add(ja.getString(i));
        }

        //texto.setText(ja.getString(1));
        Toast.makeText(getApplicationContext(), "esto da:"+ja.length(),Toast.LENGTH_LONG).show();

问题如下: 假设我的基站中有两个已放电的客户端,每个客户端有八个字段。因为许多领域被填满16。 通过显示字符串&#34;数据&#34;显示来自两个客户的数据。 但是在JSONArray&#34; ja&#34;只有一个客户。在toast中显示大小并给我8还将我的JSONArray放在arrayList中,并且只是一个客户端。 我不明白,我应该把它全部搞定 &#34; ja =新的JSONArray(数据);&#34; 有什么解释吗?

1 个答案:

答案 0 :(得分:0)

您遇到此问题,因为您的JSON无效。数组["2",...]不属于&#34;数据&#34;宾语。它被表示为一个单独的实体。

您应该将您的json更改为:

{
  "data":[
    ["1", "value2", "value3", "value4"],
    ["2", "value2", "value3", "value4"]
  ]
}

而且,结构本身并不好。如我所见,您将数组的第一个元素用作索引。最好使用显式数组对象索引,并将数据格式化为数组数组,而不是对象数组:

{
  "data":[
    {"name1":"value1", "name2":"value2", "name3":"value3"},
    {"name1":"value1", "name2":"value2", "name3":"value3"}
  ]
}

还有一个很好的资源可以帮助您检查String是否是有效的JSON对象:http://jsonformatter.curiousconcept.com/