Android:使用jackson逐对象解析JSON对象

标签 android json jackson arrays

我想在我的 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/

相关文章:

java - Java 中的 LDIF 解析器(LDIF->JSON)

javascript - 混合数组与 json - 解析问题

java - 如何禁用 jackson 的字符转义

java - 如何为嵌套的 JSON 响应映射 Mixins

android - 如何通过我的耳机播放 DTMF 音调?

android - 大约 1% 的时间找不到 list 定义的接收者

android - 可以在AsyncTask中重载publishProgress吗?

java - 如何像 "Wed Jun 20 11:01:05 +0800 2012"一样处理来自 Style 的时间数据?

java - jackson JSON 序列化 : How to ignore a nested object when all its fields are null?

javascript - 加载 JavaScript 后如何从 URL 获取 HTML 代码