2

我有这个来自 URL 的 Json:

{
  "type":"FeatureCollection",
  "features":
    [
      {
        "type":"Feature",
        "properties":
          [
            {
              "type":"colliers",
              "thumb":"upload\/estate\/135\/thumb_1. Prologis Park Wroclaw I.jpg",
              "name_pl":"Prologis Park Wroc\u0142aw I",
              "name_en":"Prologis Park Wroc\u0142aw I",
              "completearea":"167 000",
              "completeareaunit":"m2",
              "workingarea":"",
              "workingareaunit":"m2",
              "id_type":"3",
              "id":"135",
              "lon":16.939201369628,
              "lat":51.037378299619,
              "images":["public\/upload\/estate\/135\/1. Prologis Park Wroclaw I.jpg"]
            }
          ],
        "geometry":
          {
            "type":"Point",
            "coordinates":[16.939201369628,51.037378299619]
          },
        "crs":
          {
            "type":"name",
            "properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}
          }
        },

      {
        "type":"Feature",
        "properties":
          [
            {
              "type":"colliers",
              "thumb":"upload\/estate\/136\/thumb_2. Prologis Park Wroclaw III.jpg",
              "name_pl":"Prologis Park Wroc\u0142aw III",
              "name_en":"Prologis Park Wroclaw III",
              "completearea":"129 500",
              "completeareaunit":"m2",
              "workingarea":"",
              "workingareaunit":"m2",
              "id_type":"3",
              "id":"136",
              "lon":16.928386702881,
              "lat":51.105440250407,
              "images":
                [
                  "public\/upload\/estate\/136\/2. Prologis Park Wroclaw III.jpg"
                ]
            }
          ],
        "geometry":
          {
            "type":"Point",
            "coordinates":[16.928386702881,51.105440250407]
          },
        "crs":
          {
            "type":"name",
            "properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}
          }
        },
        .................... more more more...

我需要将我的手放在列表中的属性上。

所以它会是 features -> properties -> name_en (这样的对象列表)

我试试这个:

JSONParser parser = new JSONParser();
Object obj = parser.parse(Json_str);    
JSONObject jsonObject = (JSONObject) obj;
JSONArray jsonFeaturesArr = new JSONArray(jsonObject.getJSONArray("features")); 

为了创建第一个 Json 数组,但我什至不能这样做。我收到错误:方法 getJSONArray(String) 未定义 JSONObject 类型

(我对“getJSONObject”有同样的错误)。一定是失踪了,我是一个java/android新手。

如果我解决了错误,我该如何更深入地了解 Json?

提前感谢帮助。

4

3 回答 3

5

尝试:

JSONObject jSONObject = new JSONObject(jsonString);
String str_type=jSONObject.getString("type");

// using JSONArray
JSONArray featuresArr = jSONObject.getJSONArray("features");
  for (int i=0; i<featuresArr.length; i++){
    JSONObject anotherjsonObject = featuresArr.getJSONObject(i);
    //access the fields of that json object
    String str_type_one=anotherjsonObject.getString("type");
   JSONArray featuresArr_properties = anotherjsonObject.getJSONArray("properties");

   JSONObject propertiesjsonObject = featuresArr_properties.getJSONObject(0);
   String str_type=propertiesjsonObject.getString("type");
   String str_type=propertiesjsonObject.getString("thumb");
   String str_type=propertiesjsonObject.getString("name_pl");
   String str_type=propertiesjsonObject.getString("name_en");
 ////parse all items ...........
  }
于 2012-11-07T12:22:10.687 回答
2

它看起来不像 XML,而是 JSON。

您应该使用该字符串初始化 JSONObject。

 JSONObject obj = new JSONObject(str);

然后要访问某个字段,只需检查它是否存在,然后尝试从该字段获取数据,例如获取 JSONArray 调用:

if (obj.has("features")&&!obj.isNull("features")){
  JSONArray array = obj.getJSONArray("");
  for (int i=0; i<array.length; i++){
    JSONObject anotherObject = array.getJSONObject(i);
    //access the fields of that json object
  }
}
于 2012-11-07T12:16:36.010 回答
0

可操作的代码:

import org.json.JSONArray;
import org.json.JSONObject;

    try {

        JSONObject jSONObject = new JSONObject(Json_str);
        String str_type=jSONObject.getString("type");

        JSONArray featuresArr = jSONObject.getJSONArray("features");
          for (int i=0; i<featuresArr.length(); i++)
          {
            JSONObject anotherjsonObject = featuresArr.getJSONObject(i);
            String str_type_one=anotherjsonObject.getString("type");
           JSONArray featuresArr_properties = anotherjsonObject.getJSONArray("properties");

           JSONObject propertiesjsonObject = featuresArr_properties.getJSONObject(0);
           str_type=propertiesjsonObject.getString("name_pl");
          }         

    } catch (Exception e) {
        e.printStackTrace();
        Log.i("Jsor parser error","Oh no!"  + e);
    }   
于 2012-11-07T13:42:57.013 回答