2013-03-28 84 views
0

我無法解析包含對象數組的JSON流,在這裏我只添加了一個對象以進行簡化。無法解析json數組使用jackson json streaming

{ 
"status": true, 
"categories": [ 
    { 
     "obj_cat_id": "26", 
     "session_user": "212233379", 
     "timestamp": "2011-10-30 04:34:53" 
    } 
] 

}

我的嘗試:

try { 
     JsonFactory f = new JsonFactory(); 
     JsonParser jp = f.createJsonParser(is); 
     jp.nextToken(); /* START_OBJECT */ 

     while (jp.nextToken() != JsonToken.END_OBJECT) { 

      if ("status".equals(jp.getCurrentName())) { 
       jp.nextToken(); /* VALUE_TRUE */ 
       status = jp.getText(); 
       Constants.showLog("Status", jp.getText()); 
      } else if ("categories".equals(jp.getCurrentName())) { 

       //jp.nextToken(); 
       while (jp.nextToken() != JsonToken.END_ARRAY) { 
        //jp.nextToken(); 

        while (jp.nextToken() != JsonToken.END_OBJECT) { 

         String namefieldOne = jp.getText(); 
         Constants.showLog(TAG, namefieldOne); 
        } 

       } 

      } 
     } 
     jp.close(); 

的主要問題是,當我做jp.nextToken在當前令牌是START_ARRAY它直接進入END_ARRAY,我不能訪問其對象值。

我正在使用Jackson Streaming解析器來提高效率。

+0

什麼樣的錯誤你得到了什麼? – 2013-03-28 08:31:00

+0

沒有錯誤,未獲取類別數組值? – 2013-03-28 08:32:49

+0

你在這裏沒有得到任何東西? Constants.showLog(TAG,namefieldOne); try catch是否有任何異常?請顯示你的logcat – 2013-03-28 08:38:03

回答

0

您是否考慮過使用GSON?您可以使用它服務器端或客戶端(Android)。 保存共享偏好作爲JSON和東西:)

public class Category { 
     Long obj_cat_id; 
     Long session_user; 
     Timestamp timestamp; 

     /* Getters && Setters */ 
} 

public class MyEntity 
{ 
     private boolean status; 
     private List<Category> categories; 

     /* Getters && Setters */ 
} 

public class Serializer 
{ 
    private static Gson _gson; 

    static 
    { 
     _gson = new Gson(); 
    } 

    public static <T> T jsonToObject(String json, Type type) 
    { 
     return _gson.fromJson(json, type); 
    } 

    public static <T> String getJson(T object) 
    { 
     Type type = new TypeToken<T>() 
     {}.getType(); 
     return _gson.toJson(object, type); 
    } 
} 

使用這樣的:

String myJsonString = "{ 
"status": true, 
"categories": [ 
    { 
     "obj_cat_id": "26", 
     "session_user": "212233379", 
     "timestamp": "2011-10-30 04:34:53" 
    } 
] 
}"; 

MyEntity myEntity= Serializer.jsonToObject(myJsonString , MyEntity.class); 
/* And vice-versa */ 
+0

thnx,但我沒有使用GSON,即時通訊使用傑克遜(http://jackson.codehaus.org/)我需要流解析器。 – 2013-03-28 09:12:33

+0

GSON,urgh ..... – 2015-02-04 02:41:29

0

請參閱本sample Implemenation

+0

在這種情況下,這個例子真的很大,我認爲它是可以的,所以... – duDE 2013-03-28 09:59:07