Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JsonB在有效的JSON而不是Jackson上抛出解析错误';s对象映射器_Java_Json_Jackson_Jsonb - Fatal编程技术网

Java JsonB在有效的JSON而不是Jackson上抛出解析错误';s对象映射器

Java JsonB在有效的JSON而不是Jackson上抛出解析错误';s对象映射器,java,json,jackson,jsonb,Java,Json,Jackson,Jsonb,在下面的Java代码中,我注意到使用JsonB和JacksonObjectMapper解析JSON值时的不同行为。事实上,JsonB抛出错误,我不知道是否需要使用某些配置值创建JsonB,以避免这些错误 import com.fasterxml.jackson.databind.JsonNode; 导入com.fasterxml.jackson.databind.ObjectMapper; 导入javax.json.JsonValue; 导入javax.json.bind.Jsonb; 导入ja

在下面的Java代码中,我注意到使用
JsonB
和Jackson
ObjectMapper
解析JSON值时的不同行为。事实上,
JsonB
抛出错误,我不知道是否需要使用某些配置值创建
JsonB
,以避免这些错误

import com.fasterxml.jackson.databind.JsonNode;
导入com.fasterxml.jackson.databind.ObjectMapper;
导入javax.json.JsonValue;
导入javax.json.bind.Jsonb;
导入javax.json.bind.JsonbBuilder;
公共类应用程序{
私有静态Jsonb Jsonb=JsonbBuilder.create();
私有静态ObjectMapper jacksonObjectMapper=新ObjectMapper();
公共静态void main(字符串[]args){
System.out.println(“****************************************”);
System.out.println(“*JSON解析使用Jackson*”);
System.out.println(“****************************************”);
parseJsonUsingJacksonObjectMapper(“{}”);
ParseJSonSingJacksonObject映射器(“[]”);
ParseJSonusingJacksonObject映射器(“123”);
ParseJSonusingJacksonObject映射器(“文本”);
parseJsonUsingJacksonObjectMapper(“true”);
System.out.println();
System.out.println(“****************************************”);
System.out.println(“*JSON解析使用JsonB*”);
System.out.println(“****************************************”);
parseJsonUsingJsonB(“{}”);
parseJsonUsingJsonB(“[]”);
parseJsonUsingJsonB(“123”);
parseJsonUsingJsonB(“\”text\”);
parseJsonUsingJsonB(“真”);
}
私有静态void parseJsonUsingJsonB(字符串json){
试一试{
JsonValue-JsonValue=jsonb.fromJson(json,JsonValue.class);
System.out.println(String.format(“%-15s”,“json:+json)+”->type:+jsonValue.getClass());
}捕获(例外e){
System.out.println(“使用JsonB解析“+json+””时出错。异常:“+e.getClass()+”。消息:“+e.getMessage());
}
}
私有静态void parseJsonUsingJacksonObjectMapper(字符串json){
试一试{
JsonNode jsonValue=jacksonObjectMapper.readValue(json,JsonNode.class);
System.out.println(String.format(“%-15s”,“json:+json)+”->type:+jsonValue.getClass());
}捕获(例外e){
System.out.println(“使用Jackson ObjectMapper解析“+json+””时出错。异常:“+e.getClass()+”。消息:“+e.getMessage());
}
}
}
输出

******************************
* JSON parsing using Jackson *
******************************
json: {}       -> type: class com.fasterxml.jackson.databind.node.ObjectNode
json: []       -> type: class com.fasterxml.jackson.databind.node.ArrayNode
json: 123      -> type: class com.fasterxml.jackson.databind.node.IntNode
json: "text"   -> type: class com.fasterxml.jackson.databind.node.TextNode
json: true     -> type: class com.fasterxml.jackson.databind.node.BooleanNode

******************************
*  JSON parsing using JsonB  *
******************************
json: {}       -> type: class org.glassfish.json.JsonObjectBuilderImpl$JsonObjectImpl
Error while parsing '[]' using JsonB. Exception: class javax.json.bind.JsonbException. message: Can't deserialize JSON array into: interface javax.json.JsonValue
Error while parsing '123' using JsonB. Exception: class java.util.NoSuchElementException. message: null
Error while parsing '"text"' using JsonB. Exception: class java.util.NoSuchElementException. message: null
Error while parsing 'true' using JsonB. Exception: class java.util.NoSuchElementException. message: null