解析结构总是在 JAVA 中变化的 JSON 组件
Parsing a JSON component whose structure is always changing in JAVA
我想从 JSON 组件中提取所有键和值。问题是这个结构是未知的。我想在 JAVA 中解析它,以便我可以使用 key/field 名称检索任何元素。
例如:
在此 CustomError 对象中采用此格式。
"CustomError": "{\"errors\": [{ \"type\": \"INVALID_HTTP_VERB\", \"description\": \"Invalid HTTP verb for the requested resource\" }]}"
在此格式中。
"CustomError": "{\"status\":{\"code\":104050,\"user_message\":\"Method Not Allowed\",\"developer_message\":\"Invalid http method or method not allowed\"}}"
我的目标是获取所有键及其值。
第一个例子:-
type : INVALID_HTTP_VERB
description : Invalid HTTP verb for the requested resource
For 2nd example :-
code : 104050
user_message : Method Not Allowed
developer_message : Invalid http method or method not allowed
您在使用 Google gson 库吗?如果是这样,您可以像这样使用 JsonParser 对象;
JsonElement j_element = new JsonParser().parse(YOUR_STRING);
然后您可以以任何形式遍历该元素,您可以检查 element.IsJsonObject()
或 element.IsJsonArray()
等类型。
你也可以把元素变成一个对象,如果是一个,然后做 object.has("value")
然后如果它是一个 JsonObject
你可以循环遍历这样的字段;
for (Map.Entry<String, JsonElement> entry : YOUR_OBJECT.entrySet())
{
//do further bits
}
我想从 JSON 组件中提取所有键和值。问题是这个结构是未知的。我想在 JAVA 中解析它,以便我可以使用 key/field 名称检索任何元素。
例如:
在此 CustomError 对象中采用此格式。
"CustomError": "{\"errors\": [{ \"type\": \"INVALID_HTTP_VERB\", \"description\": \"Invalid HTTP verb for the requested resource\" }]}"
在此格式中。
"CustomError": "{\"status\":{\"code\":104050,\"user_message\":\"Method Not Allowed\",\"developer_message\":\"Invalid http method or method not allowed\"}}"
我的目标是获取所有键及其值。
第一个例子:-
type : INVALID_HTTP_VERB
description : Invalid HTTP verb for the requested resource
For 2nd example :-
code : 104050
user_message : Method Not Allowed
developer_message : Invalid http method or method not allowed
您在使用 Google gson 库吗?如果是这样,您可以像这样使用 JsonParser 对象;
JsonElement j_element = new JsonParser().parse(YOUR_STRING);
然后您可以以任何形式遍历该元素,您可以检查 element.IsJsonObject()
或 element.IsJsonArray()
等类型。
你也可以把元素变成一个对象,如果是一个,然后做 object.has("value")
然后如果它是一个 JsonObject
你可以循环遍历这样的字段;
for (Map.Entry<String, JsonElement> entry : YOUR_OBJECT.entrySet())
{
//do further bits
}