Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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
Android JSON处理快速_Android_Json - Fatal编程技术网

Android JSON处理快速

Android JSON处理快速,android,json,Android,Json,嘿,伙计们,这是我第一次做JSON,我从服务器上得到了JSON。现在我唯一的问题是如何获取数据 JSON包括 [ { "name": "Joe Smith", "employeeId":1, "company": "ABC", "phone": { "work": "555-555-5555", "home": "666-666-6666", "mobile": "777-777-7777" }

嘿,伙计们,这是我第一次做JSON,我从服务器上得到了JSON。现在我唯一的问题是如何获取数据

JSON包括

 [

  {


  "name": "Joe Smith",

    "employeeId":1,

    "company": "ABC",

    "phone": {
        "work": "555-555-5555",
        "home": "666-666-6666",
        "mobile": "777-777-7777"
    }
},
{
    "name": "Does Smith",
    "employeeId":2,
    "company": "XYZ",
    "phone": {
        "work": "111-111-1111",
        "home": "222-222-2222",
        "mobile": "333-333-3333"
    }
}
]

jsonData是我的JSON字符串 目前我有:

    JSONObject json = new JSONOBject(jsonData);
    JSONObject data = json.getJSONObject(*******)
    JSONArray phones = data.getJSONArray("phone");
不知道第二行应该放什么。另外,对信息进行分组的最佳方式是什么。 请让它容易理解,不完全是一个专业的还哈哈


谢谢

您的第一行是错误的,因为当前字符串是JSONObject的
JSONArray
,所以从当前字符串获取数据如下:

JSONArray json = new JSONArray(jsonData);
for(int i=0;i<json.length();i++){
      JSONObject data = json.getJSONObject(i);

       // get name,employeeId,... from data
        String str_name=data.optString("work");
         //...
      JSONObject jsonobjphones = data.getJSONObject("phone");

      // get work from phone JSONObject
      String str_work=jsonobjphones.optString("work");
      //....
 }
JSONArray json=新的JSONArray(jsonData);
对于(inti=0;i试试这个

           List list=new ArrayList();
        JSONObject jObject  = new JSONObject(str_response_starter);

        JSONArray json_array_item_id = jObject.getJSONArray("itemid");
        System.out.println("json array item id"+json_array_item_id);

        JSONArray json_array_item_name = jObject.getJSONArray("itemname");
        System.out.println("json array item name"+json_array_item_name);


        JSONArray json_array_item_type = jObject.getJSONArray("type");
        System.out.println("json array item type"+json_array_item_type);

        JSONArray json_array_item_cost = jObject.getJSONArray("cost");
        System.out.println("json array item cost"+json_array_item_cost);
现在

List nameValuePairs=新的ArrayList(kvPairs.size());
串k,v;
迭代器itKeys=kvPairs.keySet().Iterator();
while(itKeys.hasNext()){
k=itKeys.next();
System.out.println(“k的值”+k);
v=kvPairs.get(k);
System.out.println(“v”+v的值);

在JSON中,
[]
表示
JSONArray
{}
表示
JSONObject
。在JSON字符串中,它以
[
开头,因此需要以
JSONArray
开头:

JSONArray people = new JSONArray(jsonData);
然后你会注意到每个人都是一个
JSONObject
,所以现在你需要循环他们以获取他们的信息:

for(int i=0;i<people.length();i++){
  JSONObject person = people.getJSONObject(i); 
  JSONObject phones = person.getJSONObject("phone"); //phone is also a JSONObject, because it starts with '{'
  String workPhone = phones.get("work");
}

用于(int i=0;对于如何对数据进行分组,我有点困惑。我觉得它应该是一个对象数组,其中每个对象都有一个名称、id、公司和电话号码数组。我只是不知道如何实现它。最终我希望能够访问所有信息。我觉得上面的代码是临时分配的,因为数据会随时间而变化尽管信息是stored@user3311987:使用地图的ArrayList将每个人的数据存储在ArrayList中。您认为使用六个数组并使用上面给出的代码填充它们是一个好主意吗?我可以让它们成为字符串数组?一个用于名称、公司、id、手机、工作、家庭?这会给我四个数组,其中所有数组都包含eit吗她的姓名、id、公司或电话号码?现在你可以进一步迭代所有JsonArray。我需要for循环吗?数组不足以获取所有信息吗?然后我们可以在需要时使用数组吗?问题是,对于每个
JSONObject
,它们没有任何名称分配给它,这就是为什么你需要循环它们,其他人se您可以通过名称访问每个对象,这样就不需要循环。
for(int i=0;i<people.length();i++){
  JSONObject person = people.getJSONObject(i); 
  JSONObject phones = person.getJSONObject("phone"); //phone is also a JSONObject, because it starts with '{'
  String workPhone = phones.get("work");
}