其实从面相对象的角度来理解这个问题,就会很清晰。java中的一切皆对象即把世间万物(Everything in the world)看做java对象,任何处理不了的问题都可以先转化成java对象在做处理。

一、处理json数据:处理json数据目前主流的有四种方法,在不同的场景之中我们可以选择合适转化方式

1.首先是阿里巴巴的fastJson,这种号称拥有最快的处理json数据的能力,先帖代码

fastjson生成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)

String jsonStrng = JSON.toJSONString(object);

fastjson 解析json字符串为四种类型

1. JavaBean

Person person = JSON.parseObject(jsonString, Person.class);

2. List<JavaBean>

List<Person> listPerson =JSON.parseArray(jsonString, Person.class);

3. List<String>

List<String> listString = JSON.parseArray(jsonString, String.class);

4. List<Map<String,Object>>

List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});  (注意:此处可看出fastjson反射机制比gson更准确, id = 1001 通过fastjson反射仍是 id = 1001 , 而通过gson反射结果 为 id =1001.0 ,

第一种是把java对象转化成json字符串(没什么好讲的),解析json个人感觉主要是第一个用的比较广泛,因为既然是对象(一切皆对象),那么使用(Person person = JSON.parseObject(jsonString, Person.class))应该就可以处理大部分的场景了。

2.然后是谷歌的

 Gson gson = new Gson();
Gson 解析json字符串Person person = gson.fromJson(jsonData,Person.class);因为解析的json数据可能不同,所以可以通过泛型对Gson封装………

3.利用Jackson进行json解析和序列化ObjectMapper mapper = new ObjectMapper();  

//Object转json  String json = mapper.writeValueAsString(user);  //JSON反序列化User user = mapper.readValue(json, User.class);

重点来了:以上不管哪种方法序列化和反序列化得到的都是纯净的json,这个很重要,在实际解析的时候,要根据实际场景做出判断

XStream也可以进行json数据的转化,但是它得到的json对象里面是包含对应包名的
4.
连续的没有分隔的json串
XStream stream = new XStream(new JettisonMappedXmlDriver);
格式化良好的json串
XStream stream = new XStream(new JsonHierachicalStreamDriver);

二、目前主流的对xml数据转化的方法是XStream
XStream stream = new XStream();
stream.alias("object",Object.class);
对类对象进行重命名
具体的使用方法可以查看API文档
同时还有很多其他的O/X Mapping开源项目,比如JAXB、XMLBeans等,大家可以自己去了解。在spring中也对oxm进行了统一层的抽象和封装。它有两个核心的接口Marshaller和Unmarsshaller,实现这两个接口可以实现从java对象到xml的映射转换。 下一篇内容---ES搜索引擎

json、xml和java对象之间的转化的更多相关文章

  1. XML字符串和JAVA对象之间的转化

     1.JAXB中相关的注解.类和接口说明 JAXB 中主要的一些注解 - shenyunsese 的专栏 - CSDN 博客 注:教程很全面很详细.但是仅供参考. 主要疑问区分和说明:  1.1 @X ...

  2. Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...

  3. 转载-------- JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】

    转载--*--*---- 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,J ...

  4. JSON 与JAVA对象之间的转换(转)

    JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换. 一.对普通类型的JSON模式的转换 一 ...

  5. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  6. Json对象与Json字符串的转化、JSON字符串与Java对象的转换(转)

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  7. JAVA里面json和java对象之间的相互转换

    1. 把java 对象列表转换为json对象数组,并转为字符串 JSONArray array = JSONArray.fromObject(list);    String jsonstr = ar ...

  8. Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换

    总结一下利用Json相关jar包实现Java对象和集合与Json字符串之间的互相转换: 1.创建的User类: package com.ghj.packageofdomain; public clas ...

  9. java json数据转List对象的集合-----阿里巴巴插件---及原生json---JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】

    List<RunfastFullLess> list=(List<RunfastFullLess>)JSONArray.parseObject(activity.getFull ...

随机推荐

  1. iOS开发之transform

    transform主要应用于动画 1.让一个按钮每次向上移动100的距离 UIButton *head = (UIButton *)[self.view viewWithTag:10]; head.t ...

  2. iOS开发之UIView的常见属性

    1.所有控件都继承自UIView,UIView的常见属性如下: @property(nonatomic,readonly) UIView *superview;获得自己的父控件对象 @property ...

  3. flask mega-tutorial 1.0 documentation学习记录

    本文主要是记录在[用户登录]一节中出现的问题: 报错位置是在 if g.user is not None and g.user.is_authenticated(): return redirect( ...

  4. TensorFlow安装-windows系统

    官方各版本的安装说明:https://www.tensorflow.org/install/ 本文介绍如何在windows环境下安装tensorflow, 跑起来简单的demo. 1.安装python ...

  5. Jmeter-线程组

    1.Sampler 取样器(Sampler)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler , 如 HTTP Request Sam ...

  6. English Learn

    English Learn 一直决定好好学习英语.越来越觉得英语的重要性,解决日常问题.学习新东西.使用google时都经常碰到英文.所以觉得在blog上记录些学习英语的文章,也算是对自己的一种监督. ...

  7. java日期转换

    在java开发过程中,时间的转换时必须掌握的=========下面把时间转换做个总结,有可能不是很全面 时间格式只有两种 yyyy-MM-DD yyyy/MM/DD 时间的类型:字符串类型.sql类型 ...

  8. 【C++】智能指针详解(二):auto_ptr

    首先,我要声明auto_ptr是一个坑!auto_ptr是一个坑!auto_ptr是一个坑!重要的事情说三遍!!! 通过上文,我们知道智能指针通过对象去管理指针,在构造对象时完成资源的分配及初始化,在 ...

  9. [编织消息框架][JAVA核心技术]动态代理应用2

    接下来如何实现 第一步:先把服务类,调用方法转换成数字,方便传输 第二步:提取元信息,提取又有三种方式,三种各有优点,最优方式是第一种 1.编译java时处理 2.程序启动时处理,预处理 3.调用时处 ...

  10. jQuery控制input不可编辑

    1.开启disabled,是input不可以编辑 $("#id").attr("disabled","disabled"); 2.关闭dis ...