在Java中解析递归未知的json输入结构 [英] parse recursively unknown json input structure in java

查看:234
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆