Jackson中JsonParser如何解析json呢?
下文笔者讲述Jackson解析json的方法分享,如下所示
创建JsonParser解析Json字符串
即可解析json数据
JsonParser工作方式是将JSON分解成一系列标记(token)
逐个迭代这些标记进行解析
例:
Jackson解析json完整示例分享
将字符串解析为json,然后转换读取值
JsonParser简介
JsonParser类是底层JSon解析器 类似于Java使用stAx解析xml 但JsonParser仅仅解析Json JsonParser实现相较于ObjectMapper更底层 所以它的解析速度更快
创建JsonParser
创建JsonParser需先创建JsonFactory
JsonFactory用于创建JsonParser实例
其中createParser方法
实现对不同json来源
例:创建JsonParser解析Json字符串
String userJson =
"{ \"name\" : \"maomao\", \"age\" : 18 }";
JsonFactory factory = new JsonFactory();
JsonParser parser = factory.createParser(userJson);
JsonParser解析json
当创建完JsonParser实例后即可解析json数据
JsonParser工作方式是将JSON分解成一系列标记(token)
逐个迭代这些标记进行解析
String userJson =
"{ \"name\" : \"maomao\", \"age\" : 18 }";
JsonFactory factory = new JsonFactory();
JsonParser parser = factory.createParser(userJson);
while(!parser.isClosed()){
JsonToken jsonToken = parser.nextToken();
System.out.println("jsonToken = " + jsonToken);
}
注意事项:
当JsonParser的isClosed()方法返回false
则说明源json仍有标记没有被解析
当JsonParser的nextToken()方法获得JsonToken
可检查JsonToken实例的类型
JsonToken类提供一组常量表示标记类型:
START_OBJECT
END_OBJECT
START_ARRAY
END_ARRAY
FIELD_NAME
VALUE_EMBEDDED_OBJECT
VALUE_FALSE
VALUE_TRUE
VALUE_NULL
VALUE_STRING
VALUE_NUMBER_INT
VALUE_NUMBER_FLOAT
例:
Jackson解析json完整示例分享
将字符串解析为json,然后转换读取值
String userJson =
"{ \"name\" : \"maomao\", \"age\" : 18 }";
JsonFactory factory = new JsonFactory();
JsonParser parser = factory.createParser(userJson);
User user = new User();
while(!parser.isClosed()){
JsonToken jsonToken = parser.nextToken();
if(JsonToken.FIELD_NAME.equals(jsonToken)){
String fieldName = parser.getCurrentName();
System.out.println(fieldName);
jsonToken = parser.nextToken();
if("name".equals(fieldName)){
user.name = parser.getValueAsString();
} else if ("age".equals(fieldName)){
user.age = parser.getValueAsInt();
}
}
}
System.out.println("user.name = " + user.name);
System.out.println("user.age = " + user.age);
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


