代码之家  ›  专栏  ›  技术社区  ›  stefan de boer

json解析到listview/arrayadapter

  •  0
  • stefan de boer  · 技术社区  · 7 年前

    我正在制作一个应用程序,将json数据解析为listview。这对我不起作用,它不会给我任何数据。

    这是我的代码:

    public class MainActivity extends AppCompatActivity {
    
    ListView listview;
    ArrayAdapter<String> adapter;
    String[] data;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        listview = (ListView)findViewById(R.id.listview);
    
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitNetwork().build());
    
        MPWebservice();
    
        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(MainActivity.this, bestelling.class);
                intent.putExtra("naam", listview.getItemAtPosition(position).toString());
                startActivity(intent);
            }
        });
    
    }
    
    
    private void MPWebservice() {
        String Webadres = null;
        String dbResult = "empty";
        dbConnect database = new dbConnect(this);
    
        try {
            String query = "SELECT * FROM orders";
            Webadres = "?query=" + URLEncoder.encode(query, "UTF-8");
            String con = "https://amje.000webhostapp.com/mariosPizzaJSON.php" + Webadres;
            dbResult = database.execute(con).get();
        } catch (Exception e) {
            e.printStackTrace();
        }
    
        try {
            JSONArray arr = new JSONArray(dbResult);
            JSONObject jo = null;
            data = new String[arr.length()];
    
            for (int i = 0; i < 1; i++) {
                jo = arr.getJSONObject(i);
                data[i] = jo.getString("name");
            }
            adapter = new ArrayAdapter<String>(this, R.layout.layout_list, R.id.list_item, data);
            listview.setAdapter(adapter);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
      }
    

    这是logcat中的错误:

    of type org.json.JSONObject cannot be converted to JSONArray
    

    这是webservice中的json:

    {
       "orders":[
          {
             "naam":"J. Peeters",
             "adres":"Kettingstraat 12",
             "postcode":"5611 RD",
             "bestelling":[
                {
                   "Pizza":"Napolitane"
                },
                {
                   "Pizza":"Margarita"
                }
             ]
          },
          {
             "naam":"H. Wissink",
             "adres":"Frederik van Eedenplein 5",
             "postcode":"5611 KT",
             "bestelling":[
                {
                   "Pizza":"4-Stagione"
                },
                {
                   "Pizza":"Siciliane"
                },
                {
                   "Pizza":"4-Stagione"
                }
             ]
          },
          {
             "naam":"M. Huisman",
             "adres":"Hertogstraat 17",
             "postcode":"5611 PB",
             "bestelling":[
                {
                   "Pizza":"4-Stagione"
                },
                {
                   "Pizza":"Napolitane"
                },
                {
                   "Pizza":"4-Stagione"
                },
                {
                   "Pizza":"Siciliane"
                },
                {
                   "Pizza":"Salami"
                }
             ]
          },
          {
             "naam":"H. Moors",
             "adres":"Mauritsstraat 9",
             "postcode":"5611 GV",
             "bestelling":[
                {
                   "Pizza":"Calzone"
                }
             ]
          },
          {
             "naam":"H. Jansen",
             "adres":"Stationsplein 23",
             "postcode":"5611 AC",
             "bestelling":[
                {
                   "Pizza":"4-Stagione"
                },
                {
                   "Pizza":"4-Stagione"
                }
             ]
          },
          {
             "naam":"G.M. Verkuijlen-vd Ven",
             "adres":"Tramstraat 54",
             "postcode":"5611 CR",
             "bestelling":[
                {
                   "Pizza":"Napolitane"
                },
                {
                   "Pizza":"Margarita"
                }
             ]
          }
       ]
    }
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Vishal Yadav Abhishek kumar    7 年前

    问题就在这里 JSONArray arr = new JSONArray(dbResult); 把它改成 JSONObject arr = new JSONObject(dbResult); 似乎您还没有发布完整的json数据。如果无法解决,请张贴完整 json data .

        2
  •  1
  •   Krzysztof Kubicki    7 年前

    您从数据库获得的是jsonobject,而不是数组,数组在这个对象中。您应该将web服务的响应映射到jsonobject,并将 bestelling 去索纳雷。并且…正如在注释中提到的,使用一些lib来帮助您实现这一点,比如gson。