在Java中解析递归未知的json输入结构 [英] parse recursively unknown json input structure in java
本文介绍了在Java中解析递归未知的json输入结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图在Java中解析递归未知的json输入结构,如下面的格式,并尝试在另一个json中重写相同的结构。
同时我需要验证每个&
{Verbs:[{
aaaa:30d ,type:ed,rel:1.0,id:80,口语:en,ct:on,sps:null
}, {
aaaa:31,type:cc,rel:3.0,id:10,口语:en,ct ,sps:null
},{
aaaa:81,type:nn,rel:3.0,id:60 :en,ct:on,sps:null
}]}
请指教哪些json解析器可用于读取和编写未知的json内容。 解决方案
解析JSON对象:
import com.eclipsesource.json.JsonArray;
import com.eclipsesource.json.JsonObject;
import com.eclipsesource.json.JsonValue;
public class JsonQuestion {
public static void main(String [] args){
String input ={\Verbs \:[{ \\\
+
\aaaa \:\30d\,\type\:\ed\,\rel\: 1.0,\id \:\80 \,\口语\:\en \,\ct \:\on\, \sps \:null \\\
+
},{\ n+
\aaaa \:\31 \,\ type \:\cc \,\rel \:3.0,\id \:\10 \,\spoken \:\ en \,\ct \:\off \,\sps\:null \\\
+
},{\\\
+
\aaaa \:\81 \,\type \:\nn\,\\:3.0,\id \:\60 \,\口语\:\en \,\ct \:\on \,\\ sps\:null\\\
+
}]};
JsonObject jsonObject = JsonObject.readFrom(input);
handleObject(jsonObject);
}
private static void handleValue(JsonObject.Member member,JsonValue value){
if(value.isArray()){
if(member!= null ){
System.out.print(name =+ member.getName());
}
System.out.println(array value);
recurseArray(value.asArray());
} else if(value.isBoolean()){
if(member!= null){
System.out.print(name =+ member.getName());
}
System.out.println(,boolean value =+ value.asBoolean());
} else if(value.isNull()){
if(member!= null){
System.out.print(name =+ member.getName());
}
System.out.println(,null value);
} else if(value.isNumber()){
if(member!= null){
System.out.print(name =+ member.getName());
}
System.out.println(,number value =+ value.asDouble());
} else if(value.isObject()){
if(member!= null){
System.out.print(name =+ member.getName());
}
System.out.println(,object value);
handleObject(value.asObject());
} else if(value.isString()){
if(member!= null){
System.out.print(name =+ member.getName());
}
System.out.println(,string value =+ value.asString());
(JsonObject.Member next:object){
JsonValue value = next。的getValue();
handleValue(next,value);
private static void recurseArray(JsonArray array){
for(JsonValue value:array){
handleValue(null,value);
}
}
}
I'm trying to parse recursively unknown json input structure in java like the format below and trying to rewrite the same structure in another json.
Meanwhile I need to validate each & every json key/values while parsing.
{"Verbs":[{
"aaaa":"30d", "type":"ed", "rel":1.0, "id":"80", "spoken":"en", "ct":"on", "sps":null
},{
"aaaa":"31", "type":"cc", "rel":3.0, "id":"10", "spoken":"en", "ct":"off", "sps":null
},{
"aaaa":"81", "type":"nn", "rel":3.0, "id":"60", "spoken":"en", "ct":"on", "sps":null
}]}
Please advice which json parser I can use for reading and writing unknown json content.
解决方案
This way you can recursively parse JSON object:
import com.eclipsesource.json.JsonArray;
import com.eclipsesource.json.JsonObject;
import com.eclipsesource.json.JsonValue;
public class JsonQuestion {
public static void main(String[] args) {
String input = "{\"Verbs\":[{\n" +
" \"aaaa\":\"30d\", \"type\":\"ed\", \"rel\":1.0, \"id\":\"80\", \"spoken\":\"en\", \"ct\":\"on\", \"sps\":null\n" +
"},{\n" +
" \"aaaa\":\"31\", \"type\":\"cc\", \"rel\":3.0, \"id\":\"10\", \"spoken\":\"en\", \"ct\":\"off\", \"sps\":null\n" +
"},{\n" +
" \"aaaa\":\"81\", \"type\":\"nn\", \"rel\":3.0, \"id\":\"60\", \"spoken\":\"en\", \"ct\":\"on\", \"sps\":null\n" +
"}]}";
JsonObject jsonObject = JsonObject.readFrom(input);
handleObject(jsonObject);
}
private static void handleValue(JsonObject.Member member, JsonValue value) {
if (value.isArray()) {
if (member != null) {
System.out.print("name = " + member.getName());
}
System.out.println("array value ");
recurseArray(value.asArray());
} else if (value.isBoolean()) {
if (member != null) {
System.out.print("name = " + member.getName());
}
System.out.println(", boolean value = " + value.asBoolean());
} else if (value.isNull()) {
if (member != null) {
System.out.print("name = " + member.getName());
}
System.out.println(", null value");
} else if (value.isNumber()) {
if (member != null) {
System.out.print("name = " + member.getName());
}
System.out.println(", number value = " + value.asDouble());
} else if (value.isObject()) {
if (member != null) {
System.out.print("name = " + member.getName());
}
System.out.println(", object value ");
handleObject(value.asObject());
} else if (value.isString()) {
if (member != null) {
System.out.print("name = " + member.getName());
}
System.out.println(", string value = " + value.asString());
}
}
private static void handleObject(JsonObject object) {
for (JsonObject.Member next : object) {
JsonValue value = next.getValue();
handleValue(next, value);
}
}
private static void recurseArray(JsonArray array) {
for (JsonValue value : array) {
handleValue(null, value);
}
}
}
这篇关于在Java中解析递归未知的json输入结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文