关于Json-lib类库的使用
前言介绍:
json-lib包是一个Java类库,它可以将Java对象(包括:beans,maps,collections,java arrays ,xml等)和JSON互相转换。
与此相同的是谷歌也推出了一个类库叫Gson,它们能做到的效果都是一样的,今天就先不讲了。
准备工作:
首先我们需要去下载json-lib的jar包,并导入工程
由于使用方法很简单,这里就直接上代码了
1、首先写一个json的工具类,传入2参数,1为json的标示符(自定义),2为需要转换成json字符串格式的对象
package com.lcw.json.util; import net.sf.json.JSONObject; public class MakeJson { /**
*
* @param key json的标示符
* @param value json内容(多种类型,类类型,字符串,List集合等)
* @return 返回一个json表达式
*/
public static String getJson(String key,Object value){
JSONObject jsonObject=new JSONObject();
jsonObject.put(key, value);//给jsonobject对象赋值
String info=jsonObject.toString();
return info;
} }
2、提供一个数据源类
package com.lcw.json.service; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.lcw.json.vo.Person; public class JsonService { //得到一个Person对象
public Person getPerson(){
Person person=new Person(1, "tuzi", 22);//实例化一个Person对象
return person;
} //得到一个List集合(存放Person类型)
public List<Person> getListPerson(){
List<Person> list=new ArrayList<Person>();
Person person1=new Person(1, "lcw", 20);
Person person2=new Person(2, "tuzi", 22);
list.add(person1);
list.add(person2);
return list; }
//得到一个List集合(存放String类型)
public List<String> getInfo(){
List<String> list=new ArrayList<String>();
list.add("北京");
list.add("上海");
list.add("广州");
return list;
} //得到一个List集合(存放Map类型)
public List<Map<String,Object>> getListPersons(){
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>(); Map<String, Object> map1=new HashMap<String, Object>();
Person person1=new Person(1, "lcw", 20);
map1.put("person1", person1); Map<String, Object> map2=new HashMap<String, Object>();
Person person2=new Person(2, "tuzi", 22);
map2.put("person2", person2); list.add(map1);
list.add(map2); return list; } }
3、实体类
package com.lcw.json.vo; public class Person { private int id;
private String name;
private int age; public Person(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getname() {
return name;
} public void setname(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} @Override
public String toString() {
return "Person [age=" + age + ", id=" + id + ", name=" + name + "]";
} }
4、测试类
package com.lcw.json.test; import java.util.List;
import java.util.Map; import org.junit.Test; import com.lcw.json.service.JsonService;
import com.lcw.json.util.MakeJson;
import com.lcw.json.vo.Person; public class JsonTest { @Test
public void getPersonJson() {
JsonService jsonService = new JsonService();
Person p1 = jsonService.getPerson();
String info = MakeJson.getJson("person", p1);
System.out.println(info);
} @Test
public void getListPersonJson() {
JsonService jsonService = new JsonService();
List<Person> persons = jsonService.getListPerson();
String info = MakeJson.getJson("persons", persons);
System.out.println(info); } @Test
public void getListString() {
JsonService jsonService = new JsonService();
List<String> news = jsonService.getInfo();
String info = MakeJson.getJson("info", news);
System.out.println(info);
} @Test
public void getListPersonsJson() {
JsonService jsonService = new JsonService();
List<Map<String,Object>> persons = jsonService.getListPersons();
String info = MakeJson.getJson("persons", persons);
System.out.println(info); } }
上面是4个单元测试类,代码很简单,就不再做文字解释了,看下运行效果图:
接着来顺带小提下关于谷歌提供的类库:Gson
首先还是一样,需要先导入想对应的jar包
我们只需要去修改文章上面提供的工具类:(少了key标示符)
package com.lcw.json.util; import com.google.gson.Gson; public class MakeJson { /**
*
* @param value json内容(多种类型,类类型,字符串,List集合等)
* @return 返回一个json表达式
*/
public static String getJson(Object value){
Gson gson=new Gson();
String info=gson.toJson(value);//为json设置一个数据源,这个类库是自动转换成json格式,并返回一个json字符格式
return info;
} }
关于Gson的使用,可以看下这个简要笔记:《Gson简要使用笔记》
如果想做成服务端供远程调用,把这些数据打印输出到网页就可以了。 ^_^
下篇文章讲解从服务端获取到json数据,在Android客户端的解析。
关于Json-lib类库的使用的更多相关文章
- Atitit.json类库的设计与实现 ati json lib
Atitit.json类库的设计与实现 ati json lib 1. 目前jsonlib库可能有问题,可能版本冲突,抛出ex1 2. 解决之道:1 2.1. 自定义json解析库,使用多个复合的js ...
- json相关类库,java对象与json相互转换
有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...
- Java 的 JSON 开源类库选择比较(zz)
在看了作者的介绍,然后我又到mvnrepository上去看了各个库的的使用数之后,发现只能在jackson和gson之间做选择. 以下是原文 有效选择七个关于Java的JSON开源类库 April ...
- Json lib集成stucts2的使用方法 抛出 NestableRuntimeException异常的解决办法
首先贴出struts 2.3.16需要导入的包 因为使用的是2.3 版本,必须要导入这个包,否则会报java.lang.NoClassDefFoundError: org/apache/commons ...
- 使用JsonConfig控制JSON lib序列化
将对象转换成字符串,是非常常用的功能,尤其在WEB应用中,使用 JSON lib 能够便捷地完成这项工作.JSON lib能够将Java对象转成json格式的字符串,也可以将Java对象转换成xml格 ...
- JSON工具类库: alibaba/fastjson 使用记录
JSON工具类库: alibaba/fastjson 使用记录 一.了解JSON JSON标准规范中文文档: http://www.json.org/json-zh.html 最佳实践:http:// ...
- C# XML转JSON,不引用第三方JSON.NET类库
应用场景:需要调用第三方接口(返回XML)数据,然后供自己多个系统使用(涉及跨域,使用JSONP) 代理:调用接口(把XML转换为JSONP解决跨域问题) B/S应用系统:调用代理返回的数据进行UI显 ...
- Json转换类库
20160605 简单的DaTable转Json private string DtConvertJson(DataTable dt , string modelName="") ...
- JSON lib 里JsonConfig详解
一,setCycleDetectionStrategy 防止自包含 /** * 这里测试如果含有自包含的时候需要CycleDetectionStrategy */ public static void ...
- Json工具类库之Gson实战笔记
日常接口的数据传输通常使用xml或者json来传递数据,xml较庞大但是描述数据能力十分出众,json数据结构较小而且支持ajax传输,xml在数据传输和解析资源占用都比较逊色于json.因此日常的接 ...
随机推荐
- win8 无法显示桌面,运行explorer.exe 提示 0xc0000018 异常 解决办法
win8 无法显示桌面,运行explorer.exe 提示 0xc0000018 错误 解决方法改注册表.这个就是DB03.EXE引起的. cmd打开注册表:regedit找到注册表"HKE ...
- iOS手机号,身份证,车牌号正则表达式
1.手机号判断,根据维基百科2016年6月修订的段号判断 是否是手机号 /** 手机号码 13[0-9],14[5|7|9],15[0-3],15[5-9],17[0|1|3|5|6|8],18[0- ...
- python keras 神经网络框架 的使用以及实例
先吐槽一下这个基于theano的keras有多难装,反正我是在windows下折腾到不行(需要64bit,vs c++2015),所以自己装了一个双系统.这才感到linux系统的强大之初,难怪大公司都 ...
- mongo源码学习(四)服务入口点ServiceEntryPoint
在上一篇博客mongo源码学习(三)请求接收传输层中,稍微分析了一下TransportLayer的作用,这篇来看下ServiceEntryPoint是怎么做的. 首先ServiceEntryPoint ...
- Docker常用命令<转>
创建redis服务端docker run -p 6379:6379 -d --name redis-server docker.io/redis:3.0.7 redis-server -- port ...
- almond进一步优化requirejs
这里只是调侃一下,“杏仁”其实指的是almond,requirejs作者的另一个开源项目,它的定位是作为requirejs的一个替代品. 使用场景 什么情况下需要使用almond呢?假设你手头有个基于 ...
- 分治算法--寻找第k大数
问题描述:给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k大的元素,(这里给定的线性集是无序的). 其实这个问题很简单,直接对线性序列集qsort,再找出第k个即可.但是这样的 ...
- 【转】MySQL分库分表数据迁移工具的设计与实现
一.背景 MySQL作为最流行的关系型数据库产品之一,当数据规模增大遭遇性能瓶颈时,最容易想到的解决方案就是分库分表.无论是进行水平拆分还是垂直拆分,第一步必然需要数据迁移与同步.由此可以衍生出一系列 ...
- FatJar in 创新实训 自然语言交流系统
Fat Jar Eclipse Plug-In是一个可以将Eclipse JavaProject的所有资源打包进一个可执行jar文件的小工具,可以方便的完成各种打包任务,我们经常会来打jar包,但是e ...
- linux进程的挂起和恢复
进程的挂起及恢复 #ctrl+z:挂起,程序放到后台,程序没有结束. #jobs:查看被挂起的程序工作号 恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前台执行:用bg命令将挂起的作业放到后台 ...