-1

我有JSONArray以下结构:

{

    "People":[
        {
            "006MST21IND":{
                "desc":"MST21 BAL. PR. THERMOSTATIC STEAM TRAP",
                "attribute":"1,b_“F”ELEMENT / c_`G' ELEMENT;2,b_“F”ELEMENT / c_`G' ELEMENT;3, b_“F”ELEMENT / c_`G' ELEMENT"
            }
        },
        {
            "006MST22IND":{
                "desc":"MST21 BAL. PR. THERMOSTATIC STEAM TRAP",
                "attribute":"1,b_“F”ELEMENT / c_`G' ELEMENT;2,b_“F”ELEMENT / c_`G' ELEMENT;3, b_“F”ELEMENT / c_`G' ELEMENT"
            }
        }
    ]

}

我正在尝试,但它给出了以下异常,

org.json.JSONException: Value [{"006MST21IND":{"attribute":"1,b_�F�ELEMENT \/ c_`G' ELEMENT;2,b_�F�ELEMENT \/ c_`G' ELEMENT;3, b_�F�ELEMENT \/ c_`G' ELEMENT","desc":"MST21 BAL. PR. THERMOSTATIC STEAM TRAP"}},{"006MST22IND":{"attribute":"1,b_�F�ELEMENT \/ c_`G' ELEMENT;2,b_�F�ELEMENT \/ c_`G' ELEMENT;3, b_�F�ELEMENT \/ c_`G' ELEMENT","desc":"MST21 BAL. PR. THERMOSTATIC STEAM TRAP"}}] 
at People of type org.json.JSONArray cannot be converted to JSONObject

代码是:

我将 json 数据保存在文件中并从中获取,

File root = Environment.getExternalStorageDirectory();
File jsonFile = new File(root, "jsonFile.txt");
FileInputStream stream;
String jsonStr = null;
stream = new FileInputStream(jsonFile);



FileChannel fc = stream.getChannel();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());

jsonStr = Charset.defaultCharset().decode(bb).toString();


stream.close();

然后通过使用那个jsonStr,我使用以下逻辑......

JSONObject jsonObj = new JSONObject(jsonStr);

JSONObject jsonObj1 = jsonObj.getJSONObject("People");
JSONArray myJson=jsonObj1.getJSONArray("006MST21IND");

if (myJson!=null && myJson.length()!=0) {


    for(int i=0;i<myJson.length();i++)
    {
        JSONObject obj2 = myJson.getJSONObject(i);

        desc = obj2.getString("desc");
        attribute = obj2.getString("attribute");

        Log.e("Desc:", desc);
        Log.e("Attribute:", attribute);
    }

}

我正在尝试但失败了。

4

2 回答 2

0

人不是对象,它是数组
JSONArray jsonarr = jsonObj.getJSONArray ("People");

于 2014-07-09T06:12:00.007 回答
0

您尝试将 JSONobject 作为 JSONarray 获取并将 JSONarray 作为 JSONobject 获取。请尝试以下操作:

 try {
        JSONObject jsonObj = new JSONObject(jsonStr);

        JSONarray arry = jsonObj.getJSONarray("People")

        if (arry.length()!=0) {

        for(int i=0;i<arry.length();i++)
        {
           JSONObject obj2 = arry.getJSONObject(i);

           desc = obj2.getString("desc");
           attribute = obj2.getString("attribute");

           Log.e("Desc:", desc);
           Log.e("Attribute:", attribute);
        }
     }

   } catch(Exception e){
       //Catch Error Here
 }
于 2016-08-05T12:23:05.817 回答