我想在我的 Android 应用程序中访问数据库中的数据。为此,我使用了 PHP 网络服务和 JSON 格式的数据。当我向 web 服务请求数据时,我得到如下内容:
{"products":
[
{"product":["prod_id_1","prod_name_1","prod_barcode_1","prod_brand_1","prod_wrapper_1","12.00000"]},
{"product":["prod_id_2","prod_name_2","prod_barcode_2","prod_brand_2","prod_wrapper_2","24.00000"]}
]
}
但是有 1000 多种产品。显然,jsonObject 和 jsonArray 对此无能为力。所以我想使用 Jackson streaming json 解析器。我无法在我的应用程序中保留产品列表,因为那样会消耗大量内存。所以我想做的是从 json 中读取一个产品,将其写入我的 android SQLite 数据库,读取下一个产品,将其写入数据库等等。
我看过这个example但如果我使用它,我将不得不使用产品列表。所以我的问题是,如何逐个产品读取这个 jsonarray?
提前致谢。
最佳答案
如果有人需要这个,我是这样解决的,从here中学到的.
JsonFactory f = new JsonFactory();
JsonParser jp = f.createJsonParser( httpclient.execute(httppost, responseHandler) );
jp.nextToken();
while(jp.nextToken()!=JsonToken.END_OBJECT){
jp.nextToken();
while (jp.nextToken()!=JsonToken.END_ARRAY){
jp.nextToken();
while(jp.nextToken()!=JsonToken.END_OBJECT){
String fieldname = jp.getCurrentName();
while (jp.nextToken()!=JsonToken.END_ARRAY){
produto p_json = new produto(); //produto is my product class
p_json.id = Integer.parseInt(jp.getText());
jp.nextToken();
p_json.name = jp.getText();
jp.nextToken();
p_json.cod_barras = jp.getText(); //product barcode
jp.nextToken();
p_json.marca = jp.getText(); //product brand
jp.nextToken();
String formato = jp.getText(); //product wrapper
jp.nextToken();
p_json.formato = formato+"["+jp.getText()+"]"; //formatting as required by my database, as wrapper+"["+number+"]"
//The following line writes the product in the database...
bd.addProduto(p_json);
}
}
}
}
jp.close(); // ensure resources get cleaned up timely and
// properly
关于Android:使用jackson逐对象解析JSON对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11888242/