簡體   English   中英

JSON 解析為 Java - Android 應用

[英]JSON parsing to Java - Android application

我需要幫助解析 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、名稱、緯度、經度。 謝謝,邁克爾。

使用手動解析,您可以像這樣實現它:

            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

它們都可用於將 Java 對象轉換為它們的 JSON 表示。 它還可用於將 JSON 字符串轉換為等效的 Java object。

首先,您需要了解 android 中的 Json 解析,因此首先閱讀此: JSONObject ,在 class 中,您將看到以下方法:

  1. getJSONArray(字符串名稱)
  2. getJSONObject(字符串名稱)
  3. getString(字符串名稱)

以及在 android 中實現 JSON 解析時要使用的更多方法。

更新:

如果您仍然感到困惑,請單擊下面的鏈接以獲取 web 上的許多示例: Android JSON

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

Object 示例

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

If you mean to navigate easily the Json Tree, you can use JSON Path, that is query system, similar to XPath to XML, that you can use to pick some elements in a json tree using text expressions.

http://code.google.com/p/json-path/這是一個很好的實現

如果您只是想解析 JSon,您可以使用谷歌的 Gson(我猜這與 Android 兼容)。

包含您案例的完整示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM