Java 如何从JSON对象获取特定值?

Java 如何从JSON对象获取特定值?,java,android,json,getjson,Java,Android,Json,Getjson,我有一个JSON,其中我得到“地板”、“平面号”和“平面id”。所以我就这样得到它们 { "results": [ { "Flat_id": "1", "cat": "2", "Flat_no": "101", "Floor": "1", "Flat_type": "1 bhk", }, { "Flat_id": "2", "cat": "2",

我有一个JSON,其中我得到“地板”、“平面号”和“平面id”。所以我就这样得到它们

{
"results": [
    {
        "Flat_id": "1",
        "cat": "2",
        "Flat_no": "101",
        "Floor": "1",
        "Flat_type": "1 bhk",
    },
    {
        "Flat_id": "2",
        "cat": "2",
        "Flat_no": "102",
        "Floor": "1",
        "Flat_type": "2 bhk",
    },
    {
        "Flat_id": "3",
        "cat": "2",
        "Flat_no": "103",
        "Floor": "1",
        "Flat_type": "3 bhk",
    },
    {
        "Flat_id": "4",
        "cat": "2",
        "Flat_no": "104",
        "Floor": "1",
        "Flat_type": "1 rk",
    },
    {
        "Flat_id": "5",
        "cat": "2",
        "Flat_no": "201",
        "Floor": "2",
        "Flat_type": "1 bhk",
        "Floor plan": "http://vaserp.com/floor_plan/img1_1157img1_354454.png"
    },
    {
        "Flat_id": "6",
        "cat": "2",
        "Flat_no": "202",
        "Floor": "2",
        "Flat_type": "2 bhk",
        "Floor plan": "http://vaserp.com/floor_plan/img1_218706img1_1188632.png"
    },
    {
        "Flat_id": "7",
        "cat": "2",
        "Flat_no": "203",
        "Floor": "2",
        "Flat_type": "3 bhk",
    },
    {
        "Flat_id": "8",
        "cat": "2",
        "Flat_no": "204",
        "Floor": "2",
        "Flat_type": "1 rk",
    }
]
}

我知道JSON解析。但我需要一个“地板”,在那之后,所有的单位和他们的id的特定“地板”。我附上了一张图片,上面显示了我需要如何显示数据?其中“22”为楼层,“201至205”为单元号。 那么,请帮助我如何解决这个问题

我试过这样做

try {
    JSONObject jsonObj = new JSONObject(jsonStr);
    allFloorDetailArray = jsonObj.getJSONArray(JSONUrl.TAG_RESULT);
    for (int i = 0; i < allFloorDetailArray.length(); i++) {
        JSONObject c = allFloorDetailArray.getJSONObject(i);
        FloorDetailItem floorDetailItem = new FloorDetailItem();
        floorDetailItem.setCat(c.getString(JSONUrl.TAG_CAT));
        floorDetailItem.setFlatNo(c.getString(JSONUrl.TAG_FLAT_NO));
        floorDetailItem.setFloor(c.getString(JSONUrl.TAG_FLOOR));
        floorNo = c.getString(JSONUrl.TAG_FLOOR);
        floorDetailItem.setFlatType(c.getString(JSONUrl.TAG_FLATE_TYPE));
        floorDetailItem.setFloorPlanImage(c.getString(JSONUrl.TAG_FLOOR_PLAN));

        mListDetailFloor.add(floorDetailItem);

    }
} catch (JSONException e) {
    e.printStackTrace();
}
试试看{
JSONObject jsonObj=新的JSONObject(jsonStr);
allFloorDetailArray=jsonObj.getJSONArray(JSONUrl.TAG_结果);
对于(int i=0;i

如果您的“楼层”是唯一的,您可以使用
HashMap

HashMap<int,Yourflatobjectlist> data = new HashMap<int,Yourflatobjectlist>();

data.put(floornumber as a key, List of Flat present at that Floor) ; 
HashMap data=newhashmap();
数据。放置(楼层编号作为键,该楼层的公寓列表);

尝试使用HashMap,将floor作为键,将flat list作为值:

注意:您的Json响应在某些平面Json对象中无效,例如“平面图”在“平面图类型”(,)之后没有出现平面Json,逗号无效

String jsonString = "{\"results\":[{\"Flat_id\":\"1\",\"cat\":\"2\",\"Flat_no\":\"101\",\"Floor\":\"1\",\"Flat_type\":\"1 bhk\"},{\"Flat_id\":\"2\",\"cat\":\"2\",\"Flat_no\":\"102\",\"Floor\":\"1\",\"Flat_type\":\"2 bhk\"},{\"Flat_id\":\"3\",\"cat\":\"2\",\"Flat_no\":\"103\",\"Floor\":\"1\",\"Flat_type\":\"3 bhk\"},{\"Flat_id\":\"4\",\"cat\":\"2\",\"Flat_no\":\"104\",\"Floor\":\"1\",\"Flat_type\":\"1 rk\"},{\"Flat_id\":\"5\",\"cat\":\"2\",\"Flat_no\":\"201\",\"Floor\":\"2\",\"Flat_type\":\"1 bhk\",\"Floor plan\":\"http://vaserp.com/floor_plan/img1_1157img1_354454.png\"},{\"Flat_id\":\"6\",\"cat\":\"2\",\"Flat_no\":\"202\",\"Floor\":\"2\",\"Flat_type\":\"2 bhk\",\"Floor plan\":\"http://vaserp.com/floor_plan/img1_218706img1_1188632.png\"},{\"Flat_id\":\"7\",\"cat\":\"2\",\"Flat_no\":\"203\",\"Floor\":\"2\",\"Flat_type\":\"3 bhk\"},{\"Flat_id\":\"8\",\"cat\":\"2\",\"Flat_no\":\"204\",\"Floor\":\"2\",\"Flat_type\":\"1 rk\"}]}";
HashMap<String,Object> floorMap = new HashMap<String, Object>();
try{
     JSONObject responseJson =  new JSONObject(jsonString);
     JSONArray  resultJsonArray = responseJson.getJSONArray("results");

     for (int i=0;i<resultJsonArray.length();i++){
          if(floorMap.containsKey(resultJsonArray.getJSONObject(i).getString("Floor"))){
              ArrayList<HashMap<String,String>> flatList = (ArrayList<HashMap<String,String>>) floorMap.get(resultJsonArray.getJSONObject(i).getString("Floor"));
              HashMap<String,String> flatMap = new HashMap<String, String>();
              flatMap.put("Flat_id",resultJsonArray.getJSONObject(i).getString("Flat_id"));
              flatMap.put("Flat_no",resultJsonArray.getJSONObject(i).getString("Flat_no"));
              flatList.add(flatMap);
              floorMap.put(resultJsonArray.getJSONObject(i).getString("Floor"),flatList);
          }else{
              ArrayList<HashMap<String,String>> flatList = new ArrayList<HashMap<String, String>>();
              HashMap<String,String> flatMap = new HashMap<String, String>();
              flatMap.put("Flat_id",resultJsonArray.getJSONObject(i).getString("Flat_id"));
              flatMap.put("Flat_no",resultJsonArray.getJSONObject(i).getString("Flat_no"));
              flatList.add(flatMap);
              floorMap.put(resultJsonArray.getJSONObject(i).getString("Floor"),flatList);
          }
    }

}catch (Throwable e){
    e.printStackTrace();
}

Iterator it = floorMap.entrySet().iterator();
while (it.hasNext()) {
   Map.Entry pairs = (Map.Entry)it.next();
   System.out.print("Floor :: "+pairs.getKey());
   ArrayList<HashMap<String,String>> flatList = (ArrayList<HashMap<String,String>>) pairs.getValue();
   for(HashMap<String,String> flat : flatList){
       System.out.print("Flat_id :: "+flat.get("Flat_id"));
       System.out.print("Flat_no :: "+flat.get("Flat_no"));
   }
}
“1”号,“猫猫”:“2\”,“扁平化”号,”,”扁平化号之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以之所以是,是,”码码码>字符串。该字符串的字符串字符串。以下以下以下几方面的字符串。字符串字符串字符串。以下以下是字符串字符串。字符串字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。字符串。以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下,“公寓编号:\“103\”,“楼层:\“1\”,“公寓类型:\“3 bhk\”,{“公寓id\”:“4\”,“cat”\“:“2\”、“公寓号”:“104\”、“楼层号”:“1\”、“公寓类型”:“1 rk\”、{“公寓号”:“5\”、“cat\”:“2\”、“公寓号”:“201\”、“楼层号”:“2\”、“公寓类型”:“1 bhk\”、“楼层平面图”:”http://vaserp.com/floor_plan/img1_1157img1_354454.png\“},{“平面图id\”:“6\”,“cat\”:“2\”,“平面图编号”:“202\”,“楼层”:“2\”,“平面图类型”:“2 bhk\”,“楼层平面图”:\"http://vaserp.com/floor_plan/img1_218706img1_1188632.png\“},{Flat\u id\”:“7\”,“cat\”:“2\”,“Flat\u no\”:“203\”,“Floor\”:“2\”,“Flat\u type\”:“3BHK\”,{“Flat\u id\”:“8\”,“cat\”:“2\”,“Flat\u no\”:“204\”,“Floor\”:“Floor\”:“2\”,“Flat\u type\:“1RK\”); HashMap floorMap=新HashMap(); 试一试{ JSONObject responseJson=新的JSONObject(jsonString); JSONArray resultJsonArray=responseJson.getJSONArray(“结果”);
对于(inti=0;我不明白你的问题。请解释更多!我的意思是我需要22处的楼层号(见图),正如你所看到的,我在每个对象中都有“楼层”。因此它只能出现1次,并且它的所有平面必须像201到205一样(见图)。因此,我的意思是,我需要1次发言权,所有的发言权必须随附。@AmitJayaswal您需要解析整个JSON,并且需要操作数据来显示。在解析时留下一些数据不是一个好方法。我的意思是,我得到的发言权是“1”4次,但必须只显示1次,平面图101、102、103、104必须像图像一样显示。您可以解析整个json并按楼层编号对对象进行分组。