java中Array/List/Map/Object与Json互相转换详解
http://blog.csdn.net/xiaomu709421487/article/details/51456705
一、JSON建构有两种结构:对象和数组
(1)一个对象以“{”(左括号)开始,“}”(右括号)结束。
说了这些基本了解json的数据结构了...
补充:在线Json校验格式化工具:http://www.bejson.com/go.php?u=http://www.bejson.com/index.php
三、老样子上次demo
这时我的工程结构图:上面引用到的外部库大家网上搜索下载~

configdata.json:
- [
- true,
- false,
- true
- ]
Address类:
- /**
- * @Title: 创建Address实体类的POJO
- * @Description: TODO(用一句话描述该文件做什么)
- * @author Potter
- * @date 2013-2-18 上午10:16:03
- * @version V1.0
- */
- public class Address {
- private String street;//街道
- private String city;//城市
- private int zip;//邮编
- private String tel;//第一个电话号码
- private String telTwo;//第二个电话号码
- public Address() {
- }
- public Address(String street, String city, int zip, String tel, String telTwo){
- this.street = street;
- this.city = city;
- this.zip = zip;
- this.tel = tel;
- this.telTwo = telTwo;
- }
- public String getStreet() {
- return street;
- }
- public void setStreet(String street) {
- this.street = street;
- }
- public String getCity() {
- return city;
- }
- public void setCity(String city) {
- this.city = city;
- }
- public int getZip() {
- return zip;
- }
- public void setZip(int zip) {
- this.zip = zip;
- }
- public String getTel() {
- return tel;
- }
- public void setTel(String tel) {
- this.tel = tel;
- }
- public String getTelTwo() {
- return telTwo;
- }
- public void setTelTwo(String telTwo) {
- this.telTwo = telTwo;
- }
- }
JsonTest类:
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Map;
- import net.sf.ezmorph.bean.MorphDynaBean;
- import net.sf.json.JSONArray;
- import net.sf.json.JSONFunction;
- import net.sf.json.JSONObject;
- public class JsonTest {
- public static void main(String args[]) {
- //javaArray和json互相转换
- javaArrayAndJsonInterChange();
- System.out.println("-------------------------------------");
- //javaList和json互相转换
- javaListAndJsonInterChange();
- System.out.println("-------------------------------------");
- //javaMpa和Json互转
- javaMapAndJsonInterChange();
- System.out.println("-------------------------------------");
- //javaObject和jsonObject互转
- javaObjectAndJsonInterChange();
- }
- /**
- * javaArray和json互相转换
- */
- public static void javaArrayAndJsonInterChange() {
- // java 转数组
- boolean[] boolArray = new boolean[] { true, false, true };
- JSONArray jsonArray = JSONArray.fromObject(boolArray);
- String s = jsonArray.toString();
- System.out.println(s);
- // 通过json获取数组中的数据
- String result = readJson("configdata");
- JSONArray jsonR = JSONArray.fromObject(result);
- int size = jsonR.size();
- for (int i = 0; i < size; i++) {
- System.out.println(jsonR.get(i));
- }
- }
- /**
- * javaList和json互相转换
- */
- public static void javaListAndJsonInterChange() {
- List list = new ArrayList();
- list.add(new Integer(1));
- list.add(new Boolean(true));
- list.add(new Character('j'));
- list.add(new char[] { 'j', 's', 'o', 'n' });
- list.add(null);
- list.add("json");
- list.add(new String[] { "json", "-", "lib" });
- // list转JSONArray
- JSONArray jsArr = JSONArray.fromObject(list);
- System.out.println(jsArr.toString(4));
- // 从JSON串到JSONArray
- jsArr = JSONArray.fromObject(jsArr.toString());
- // --从JSONArray里读取
- // print: json
- System.out.println(((JSONArray) jsArr.get(6)).get(0));
- }
- /**
- * javaMpa和Json互转
- */
- public static void javaMapAndJsonInterChange() {
- Map map = new LinkedHashMap();
- map.put("integer", new Integer(1));
- map.put("boolean", new Boolean(true));
- map.put("char", new Character('j'));
- map.put("charArr", new char[] { 'j', 's', 'o', 'n' });
- // 注:不能以null为键名,否则运行报net.sf.json.JSONException:
- // java.lang.NullPointerException:
- // JSON keys must not be null nor the 'null' string.
- map.put("nullAttr", null);
- map.put("str", "json");
- map.put("strArr", new String[] { "json", "-", "lib" });
- map.put("jsonFunction", new JSONFunction(new String[] { "i" },"alert(i)"));
- map.put("address", new Address("P.O BOX 54534", "Seattle, WA", 42452,"561-832-3180", "531-133-9098"));
- // map转JSONArray
- JSONObject jsObj = JSONObject.fromObject(map);
- System.out.println(jsObj.toString(4));
- // 从JSON串到JSONObject
- jsObj = JSONObject.fromObject(jsObj.toString());
- //第一种方式:从JSONObject里读取
- // print: json
- System.out.println(jsObj.get("str"));
- // print: address.city = Seattle, WA
- System.out.println("address.city = " + ((JSONObject) jsObj.get("address")).get("city"));
- //第二种方式:从动态Bean里读取数据,由于不能转换成具体的Bean,感觉没有多大用处
- MorphDynaBean mdBean = (MorphDynaBean) JSONObject.toBean(jsObj);
- // print: json
- System.out.println(mdBean.get("str"));
- //print: address.city = Seattle, WA
- System.out.println("address.city = " + ((MorphDynaBean) mdBean.get("address")).get("city"));
- }
- /**
- * javaObject和jsonObject互转
- */
- public static void javaObjectAndJsonInterChange(){
- Address address=new Address("P.O BOX 54534", "Seattle, WA", 42452,"561-832-3180", "531-133-9098");
- //object转JSONObject
- JSONObject jsObj = JSONObject.fromObject(address);
- System.out.println(jsObj.toString(4));
- //JsonObject转java Object
- Address addressResult=(Address) JSONObject.toBean(jsObj, Address.class);
- System.out.println("address.city = "+ addressResult.getCity());
- System.out.println("address.street="+addressResult.getStreet());
- System.out.println("address.tel = "+ addressResult.getTel());
- System.out.println("address.telTwo="+addressResult.getTelTwo());
- System.out.println("address.zip="+addressResult.getZip());
- }
- /**
- * 读取json文件
- * @param fileName 文件名,不需要后缀
- * @return
- */
- public static String readJson(String fileName) {
- String result = null;
- try {
- File myFile = new File("./config/" + fileName + ".json");
- FileReader fr = new FileReader(myFile);
- char[] contents = new char[(int) myFile.length()];
- fr.read(contents, 0, (int) myFile.length());
- result = new String(contents);
- fr.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return result;
- }
- }

哈哈~ 没想到其实挺简单的!!!
java中Array/List/Map/Object与Json互相转换详解的更多相关文章
- java中Array/List/Map/Object与Json互相转换详解(转载)
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- JAVA中list,set,map与数组之间的转换详解
package test; import java.util.*; /** * Created by ming */ public class Test { public static void ma ...
- JAVA中时间格式(SimpleDateFormat)和数字格式(DecimalFormat)转换详解(转)
时间格式转换SimpleDateFormat: //定义日期的格式 SimpleDateFormat format =new SimpleDateFormat("yyMMdd"); ...
- PHP中IP地址与整型数字互相转换详解
这篇文章主要介绍了PHP中IP地址与整型数字互相转换详解,本文介绍了使用PHP函数ip2long与long2ip的使用,以及它们的BUG介绍,最后给出自己写的两个算法,需要的朋友可以参考下 IP转换成 ...
- Java中数组判断元素存在几种方式比较详解
1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...
- java中String类、StringBuilder类和StringBuffer类详解
本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html 版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...
- Java中的公平锁和非公平锁实现详解
前言 Java语言中有许多原生线程安全的数据结构,比如ArrayBlockingQueue.CopyOnWriteArrayList.LinkedBlockingQueue,它们线程安全的实现方式并非 ...
- java中装箱和拆箱的详细使用(详解)
一.什么是装箱?什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Jav ...
- Java中通过Class类获取Class对象的方法详解
方式1:通过Object类的getObject()方法 Person p = new Person(); Class c = p.getClass(); 方式2: 通过 类名.class 获取到字节码 ...
随机推荐
- AS3中 Event 类的target和currentTarget属性
在事件处理过程中,会自动生成事件类的实例,并传给侦听器函数.通过这个参数就可以使用事件类的属性和方法.其中target与currentTarget属性是两个很相似的属性. 对于简单的事件处理过程,分清 ...
- Adobe AIR对本地文件(XML文件)的操作
引用:http://addiwang.blog.163.com/blog/static/118130772011221114230288/ Air的文件操做主要涉及两个类,FIle和FileStrea ...
- linux Centos下安装 sqlserver
我使用的是Centos7在虚拟机中完成测试 1.下载设置mssql的yum源,执行以下代码,现在sqlserver的linux版本130多兆,网速慢的请等待 curl https://packages ...
- WebConfig错误页配置
在system.web节下配置<customErrors mode="On" defaultRedirect="/ErrorPage/MyErrorPage.htm ...
- iOS学习——制作一个小型加法计算器
一.项目要求:制作一个加法计算器.在第1个和第2个文本框中输入两个整数,然后点击“计算”按钮,可将计算结果显示在第3个文本框中. 二.开发步骤: 1.搭建UI界面 2.监听按钮的点击事件 3.获取文本 ...
- JPA in Spring
JPA(Java Persistence API):Sun官方提出的Java持久化规范,定义了对象-关系映射(ORM)以及实体对象持久化的标准接口.Sun引入JPA出于两个原因:一.简化现有Java ...
- js实现控制日期月份增减
定义一个当前日期变量 var myDate = new Date(); 处理月份添加函数(date当前日期,num增加的月份[正数:增加月份,负数:减少月份])function addMonth(da ...
- es搜索引擎
1.es简介 2.es优缺点 3.es使用 4.es可以解决的问题 5.es举例 6.es执行结果截图 7.es数据增量方案 8.使用es搜索 一.es简介 es是一个是一个实时的分布式搜索和分析引擎 ...
- laravel框架总结(十一) -- 集合
创建集合: collect 辅助函数会利用传入的数组生成一个新的 Illuminate\Support\Collection 实例. $collection = collect([1, 2, 3] ...
- C4.5算法的学习笔记
有日子没写博客了,这些天忙着一些杂七杂八的事情,直到某天,老师喊我好好把数据挖掘的算法搞一搞!于是便由再次埋头看起算法来!说起数据挖掘的算法,我想首先不得的不提起的就是大名鼎鼎的由决策树算法演化而来的 ...