使用 JsonObject 从资源中读取 JSON 文件



我想将资源中的 JSON 文件分配给来自 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}
}

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

class ResourseResponse {
private String id;
private String name;
private String num;
//getter-setter
}

然后从JsonReader分析json并创建模型。

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);
}

如果 JSON 内容不是太大,您可以轻松创建 org.json.JSONObject 并迭代其键。

String jsonStr = "{"id":"1","name":"E1","num":1111, "My":{"id":"2","name":"E2","num":2222} }"
JSONObject json = new JSONObject(jsonStr);
json.keys().forEachRemaining(x -> {
System.out.println(x.toString());
try {
if (json.get(x.toString()) instanceof JSONObject) {
System.out.println(json.get(x.toString())); / here you can iterate the internal json object
}
} catch (JSONException e) {
e.printStackTrace();
}
});

输出为: 数字

名字

编号

{"num":2222,"name":"E2","id":"2"}

最新更新