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);
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。