首页 > 解决方案 > 使用 JsonObject 从资源中读取 JSON 文件

问题描述

我想将 Resources 中的 JSONfile 分配给 JsonObject 的一个实例并解析它。请指导如何?

主要活动:

    boolean bool = true;
    boolean bool2=true;
    String s = "";
    input = getResources().openRawResource(R.raw.infojson);

    JsonReader reader = new JsonReader(new InputStreamReader(input));

    reader.beginObject();

    while (bool==true){


        String sv ="";
        sv=reader.nextName();
        s +=sv;

        if(sv.equals("id")| sv.equals("num")){
            s +=" : " ;
            s+=(String.valueOf(reader.nextInt()));
        }
        if (sv.equals("name")){
            s +=" : " ;
            s+=reader.nextString();
        }
        s+="\t";
        bool = reader.hasNext();
    }

JSON 内容:

{
    "id":"1","name":"E1","num":1111,
    "My":{"id":"2","name":"E2","num":2222}
}

标签: androidjson

解决方案


创建一个模型来解析您的json如下所示:

class ResourseResponse {
    private String id;
    private String name;
    private String num;

    //getter-setter
}

然后解析你的jsonfromJsonReader并创建你的模型。

JsonReader reader = new JsonReader(new InputStreamReader(input));
Gson gson = new Gson();

if (reader.peek() != JsonToken.BEGIN_OBJECT) {
    reader.beginArray();
    while (reader.hasNext()) {
        ResourseResponse response = gson.fromJson(reader, ResourseResponse.class);

        //Add to list
    }
    reader.endArray();
} else {
    ResourseResponse message = gson.fromJson(reader, ResourseResponse.class);

}

推荐阅读