Jackson将json string转为Object,org.json读取json数组的实例

 更新时间:2017年12月11日 16:43:09   作者:静待风雨歇  
下面小编就为大家带来一篇Jackson将json string转为Object,org.json读取json数组的实例,具有很好的参考价值,希望对大家有所帮助

从json文件读取json string或者自定义json string,将其转为object。下面采用的object为map,根据map读取json的某个数据,可以读取第一级的数据name,后来发现想转成JsonArray读取”red“时没撤了,只好用了其他方法。

最后用org.json包解决了(readJsonArray函数),有空再看看有没有更好的办法。

JSON文件如下:

{
 "name":"name",
 "id":"id",
 "color":[
  {"red":"red","blue":"blue"},
  {"white":"white"}
 ]
}

代码如下:

package com;
import org.codehaus.jackson.map.ObjectMapper;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.util.Map;
/**
 * Hello world!
 *
 */
public class JsonAnalysis
{
 private static final Logger LOG = LoggerFactory.getLogger(JsonAnalysis.class);
 public static void main(String[] args) throws FileNotFoundException {
  String jsonString = "{\"address\":\"address\",\"name\":\"name\",\"id\":\"1\",\"email\":\"email\"}";
  FileReader fileReader = new FileReader("E:\\JsonAnalysis\\src\\test.json");
  String fileString = readFile(fileReader);
  //Json字符串转java对象,比如转为Map对象读取其中数据
  Map map = null;
  Map mapFile = null;
  try {
   map = readValue(jsonString, Map.class);
   mapFile = readValue(fileString, Map.class);
  } catch (Exception e) {
   e.printStackTrace();
   LOG.error("ReadValue occur exception when switch json string to map");
  }
  System.out.println(map != null ? map.get("id") : null);
  if (mapFile==null){
   LOG.info("Json map form file is empty");
   return;
  }
  System.out.println(mapFile.get("name"));
  try {
   readJsonArray(fileString);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 //Json string to object
 private static <T> T readValue(String jsonStr, Class<T> valueType) throws Exception{
  ObjectMapper objectMapper = new ObjectMapper();
  try {
//   Object object = objectMapper.readValue(jsonStr,Object.class);
   return objectMapper.readValue(jsonStr,valueType);
  } catch (IOException e) {
   e.printStackTrace();
  }
  return null;
 }
 //Read file and to string
 private static String readFile(FileReader fileReader){
  BufferedReader bufferedReader = new BufferedReader(fileReader);
  StringBuilder fileStr = new StringBuilder();
  try {
   String eachLine;
   while ((eachLine=bufferedReader.readLine())!=null){
    fileStr.append(eachLine);
   }
   return fileStr.toString();
  } catch (IOException e1) {
   e1.printStackTrace();
   LOG.error("Occur exception when read file,file={}",fileReader);
   return null;
  }
 }
 //根据json string 获取json array,读取数据( 注意该部分引用的是org.json 包)
 private static void readJsonArray(String jsonStr) throws Exception {
  JSONObject jsonObject = new JSONObject(jsonStr);
  JSONArray jsonArray = jsonObject.getJSONArray("color");
  JSONObject jsonObject1 = jsonArray.getJSONObject(0);
  System.out.println(jsonObject1.get("red"));
 }
}

以上这篇Jackson将json string转为Object,org.json读取json数组的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java按值传递和按址传递(面试常见)

    Java按值传递和按址传递(面试常见)

    这篇文章主要介绍了Java按值传递和按址传递(面试常见)知识,在面试笔试题中经常会遇到,今天小编给大家详细介绍下,需要的朋友可以参考下
    2017-02-02
  • SpringBoot用JdbcTemplates访问Mysql实例代码

    SpringBoot用JdbcTemplates访问Mysql实例代码

    本篇文章主要介绍了SpringBoot用JdbcTemplates访问Mysql实例代码,非常具有实用价值,需要的朋友可以参考下
    2017-05-05
  • Java中字符串常见题之String相关讲解

    Java中字符串常见题之String相关讲解

    今天小编就为大家分享一篇关于Java中字符串常见题之String相关讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 详解Java如何实现小顶堆和大顶堆

    详解Java如何实现小顶堆和大顶堆

    今天给大家带来的是关于Java的相关知识,文章围绕着Java如何实现小顶堆和大顶堆展开,文中有非常详细的解释及代码示例,需要的朋友可以参考下
    2021-06-06
  • 大厂禁止SpringBoot在项目使用Tomcat容器原理解析

    大厂禁止SpringBoot在项目使用Tomcat容器原理解析

    这篇文章主要为大家介绍了大厂禁止SpringBoot在项目使用Tomcat原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • SpringBoot2如何集成Elasticsearch6.x(TransportClient方式)

    SpringBoot2如何集成Elasticsearch6.x(TransportClient方式)

    这篇文章主要介绍了SpringBoot2如何集成Elasticsearch6.x(TransportClient方式)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java 精炼解读时间复杂度与空间复杂度

    Java 精炼解读时间复杂度与空间复杂度

    对于一个算法,其时间复杂度和空间复杂度往往是相互影响的,当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间,这篇文章主要给大家介绍了关于Java时间复杂度、空间复杂度的相关资料,需要的朋友可以参考下
    2022-03-03
  • 使用Maven进行多模块项目管理的操作步骤

    使用Maven进行多模块项目管理的操作步骤

    使用Maven进行多模块项目管理可以清晰组织大型项目结构,便于维护和构建,详细步骤包括创建父项目,设置pom.xml,创建子模块,并配置子模块的pom.xml,在父项目中管理依赖,通过命令行构建项目,确保配置一致性
    2024-10-10
  • Java源码刨析之ArrayQueue

    Java源码刨析之ArrayQueue

    在本篇文章当中主要给大家介绍一个比较简单的JDK为我们提供的容器ArrayQueue,这个容器主要是用数组实现的一个单向队列,整体的结构相对其他容器来说就比较简单了
    2022-07-07
  • java根据url抓取并生成缩略图的示例

    java根据url抓取并生成缩略图的示例

    这篇文章主要介绍了java根据url抓取并生成缩略图的示例,需要的朋友可以参考下
    2014-05-05

最新评论