[英]How to handle json array parsing with Jackson parser in Android
這是我的json數據結構。 與此類似,它具有大量數據。 我正在使用Jackson解析器對此進行解析。
{
"dealers":
{
"google.com":{"id":1,"merchantname":"google","status":"active"},
"apple.com":{"id":2,"merchantname":"apple","status":"active"}
}
}
碼:
while (jParser.nextToken() != JsonToken.END_OBJECT) {
jParser.nextToken();
while (jParser.nextToken() != JsonToken.END_OBJECT) {
jParser.nextToken();
while (jParser.nextToken() != JsonToken.END_OBJECT) {
jParser.nextToken();
String fieldname = jParser.getCurrentName();
if (fieldname != null) {
if ("id".equals(fieldname)) {
jParser.nextToken();
if (jParser.getText() != null)
merchantID = jParser.getText();
else
merchantID = "";
}
if ("merchantname".equals(fieldname)) {
jParser.nextToken();
if (jParser.getText() != null)
merchantname = jParser.getText();
else
merchantname = "";
}
if ("status".equals(fieldname)) {
jParser.nextToken();
if (jParser.getText() != null)
name = jParser.getText();
}
}
}
}
}
數據解析不正確。 被jParser.nextToken()方法所困擾。 有人可以在這里指出錯誤嗎?
JSON中的“經銷商”屬性表示Map<String, POJO_CLASS>
。 您可以輕松地將其轉換為以下POJO類:
class RootEntity {
private Map<String, Entity> dealers;
//getters,setters, toString
}
class Entity {
private int id;
private String merchantname;
private String status;
//getters,setters, toString
}
用法示例:
import java.io.File;
import java.io.IOException;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonProgram {
public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.readValue(new File("/data/x.json"), RootEntity.class));
}
}
打印:
RootEntity [dealers={google.com=Entity [id=1, merchantname=google, status=active], apple.com=Entity [id=2, merchantname=apple, status=active]}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.