-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

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 に答える
0

pepole はオブジェクトではなく、配列
です JSONArray jsonarr = jsonObj.getJSONArray ("People");

于 2014-07-09T06:12:00.007 に答える