JSON解析到Java - Android应用程序

时间:2011-07-21 08:50:35

标签: java android json parsing

我需要帮助解析Java Android Appl中的json字符串。

JSON文件的文本:

{"data":{"columns":["location_id","name","description","latitude","longitude","error","type","type_id","icon_media_id","item_qty","hidden","force_view"],"rows":[[2,"Editor","",43.076014654537,-89.399642451567,25,"Npc",1,0,1,"0","0"],[3,"Dow Recruiter","",43.07550842555,-89.399381822662,25,"Npc",2,0,1,"0","0"] [4,"Protestor","",43.074933,-89.400438,25,"Npc",3,0,1,"0","0"],[5,"State Legislator","",43.074868061524,-89.402136196317,25,"Npc",4,0,1,"0","0"],[6,"Marchers Bascom","",43.075296413877,-89.403374183615,25,"Node",22,0,1,"0","0"] [7,"Mary","",43.074997865584,-89.404967573966,25,"Npc",7,0,1,"0","0"]]},"returnCode":0,"returnCodeDescription":null}

如何获取值:location_id,名称,纬度,经度。 谢谢,米哈尔。

5 个答案:

答案 0 :(得分:13)

使用手动解析,您可以像这样实现:

            JSONArray  pages     =  new JSONArray(jsonString);
            for (int i = 0; i < pages.length(); ++i) {
                JSONObject rec = pages.getJSONObject(i);
                JSONObject jsonPage =rec.getJSONObject("page");
                String address = jsonPage.getString("url");
                String name = jsonPage.getString("name");
                String status =  jsonPage.getString("status");
}

在你的情况下注意你的外部元素数据是JSONObject的类型然后你有一个JSONArray

我的json文件:

[{"page":{"created_at":"2011-07-04T12:01:00Z","id":1,"name":"Unknown Page","ping_at":"2011-07-04T12:06:00Z","status":"up","updated_at":"2011-07-04T12:01:00Z","url":"http://www.iana.org/domains/example/","user_id":2}},{"page":{"created_at":"2011-07-04T12:01:03Z","id":3,"name":"Down Page","ping_at":"2011-07-04T12:06:03Z","status":"up","updated_at":"2011-07-04T12:01:03Z","url":"http://www.iana.org/domains/example/","user_id":2}}] 

请注意,我的开始是[,这意味着一个数组,但是来自{然后你有[数组内部]。如果使用调试器运行它,则可以确切地看到json对象中的内容。

还有更好的方法,如:

  1. Jackson
  2. Jackson-JR(轻量级杰克逊)
  3. GSON
  4. 所有这些都可用于将Java对象转换为其JSON表示。它还可用于将JSON字符串转换为等效的Java对象。

答案 1 :(得分:3)

首先,你需要了解android中的Json解析,所以首先阅读:JSONObject,在该类中,您将看到以下方法:

  1. getJSONArray(String name)
  2. getJSONObject(String name)
  3. getString(String name)
  4. 以及在android中实现JSON解析时使用的更多方法。

    更新

    如果您仍然感到困惑,请点击以下链接,在网络上提供许多示例:Android JSON Parsing

答案 2 :(得分:0)

您需要使用GSON lib http://code.google.com/p/google-gson/

对象示例

class BagOfPrimitives {
  private int value1 = 1;
  private String value2 = "abc";
  private transient int value3 = 3;
  BagOfPrimitives() {
    // no-args constructor
  }
}

(序列化)

BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);  
==> json is {"value1":1,"value2":"abc"}

请注意,您无法使用循环引用序列化对象,因为这会导致无限递归。

(反序列化)

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);   
==> obj2 is just like obj

答案 3 :(得分:0)

如果您想轻松导航Json树,您可以使用JSON Path,即查询系统,类似于XPath到XML,您可以使用它来使用文本表达式选择json树中的某些元素。

http://code.google.com/p/json-path/这是一个很好的实现

如果你只是想要解析那个JSon,你可以使用谷歌的Gson(我认为这与Android兼容)。

答案 4 :(得分:0)

This包含您案例的完整示例。