1.前言.
如题
2.例子.
import com.alibaba.fastjson.JSON;
public class Person {
int age;
String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
String jsonString="{\"name\":\"hah\",\"age\":1}";
Person person = JSON.parseObject(jsonString, Person.class);
System.out.println(1);
}
}
3.参考.
上面为本人的例子,下面是摘录自博客园这位叫PointNet的博主的比较完整的文章:
http://www.cnblogs.com/goody9807/p/4244862.html
二. 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 ,
JSON解析器fastjson(阿里巴巴出品,版本1.1.26),如果定义了JSONObject为{"JACKIE_ZHANG":"张学友","ANDY_LAU":"刘德华","LIMING":"黎明","Aaron_Kwok":"郭富城"},那么读取值时,KEY顺序无序,测试代码:
import com.alibaba.fastjson.JSONObject;
/**
* Created by wangzhenfei on 14-4-15.
*/
public class FastJsonTest {
public static void main(String[] args){
String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ;
//做5次测试
for(int i=0,j=5;i<j;i++)
{
JSONObject jsonObject = JSONObject.parseObject(jsonStr) ;
for(java.util.Map.Entry<String,Object> entry:jsonObject.entrySet()){
System.out.print(entry.getKey()+"-"+entry.getValue()+"\t");
}
System.out.println();//用来换行
}
}
}
运行结果:
LIMING-黎明 Aaron_Kwok-郭富城JACKIE_ZHANG-张学友ANDY_LAU-刘德华
Aaron_Kwok-郭富城 ANDY_LAU-刘德华LIMING-黎明JACKIE_ZHANG-张学友
Aaron_Kwok-郭富城 JACKIE_ZHANG-张学友ANDY_LAU-刘德华LIMING-黎明
LIMING-黎明 ANDY_LAU-刘德华JACKIE_ZHANG-张学友Aaron_Kwok-郭富城
JACKIE_ZHANG-张学友 LIMING-黎明ANDY_LAU-刘德华Aaron_Kwok-郭富城
解决办法:定义为JSONArray,代码如下:
import com.alibaba.fastjson.JSONArray;
/**
* Created by wangzhenfei on 14-4-15.
*/
public class FastJsonTest {
public static void main(String[] args){
String jsonStr = "[{\"JACKIE_ZHANG\":\"张学友\"},{\"ANDY_LAU\":\"刘德华\"},{\"LIMING\":\"黎明\"},{\"Aaron_Kwok\":\"郭富城\"}]" ;
//做5次测试
for(int i=0,j=5;i<j;i++)
{
JSONArray jsonArray = JSONArray.parseArray(jsonStr);
for(int k=0;k<jsonArray.size();k++){
System.out.print(jsonArray.get(k) + "\t");
}
System.out.println();//用来换行
}
}
}
运行结果为:
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
如果就想要定义为JSONObject,而不是JSONArray,可以选用其他JSON解析器,个人推荐使用google的gson,文档明显比fastjson好很多(从这里可以看出阿里巴巴和谷歌的差距):
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
/**
* Created by wangzhenfei on 14-4-15.
*/
public class FastJsonTest {
public static void main(String[] args){
String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ;
//做5次测试
for(int i=0,j=5;i<j;i++)
{
JsonObject jsonObject = (JsonObject) new JsonParser().parse(jsonStr);
for(java.util.Map.Entry<String,JsonElement> entry:jsonObject.entrySet()){
System.out.print(entry.getKey()+"-"+entry.getValue()+"\t");
}
System.out.println();//用来换行
}
}
}
运行结果:
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"
分享到:
相关推荐
fastjson 的一个小例子,里面是我博客中的代码, http://blog.csdn.net/yunxiaoxiaoyun/article/details/16811973
android 解析json是很常用的技术 下面是一个优化过的例子 可以帮助需要的同学
fastjson的各种用法例子,给初学者学习使用
lotus domino 结合fastjson开发例子
使用org.json 、谷歌gson 以及阿里巴巴fastjson解析JSON格式数据的完整例子(JavaWeb项目)
阿里巴巴开源包,fastjson的基础入门。 这里介绍 fastjson 用于生成和解析 JSON 数据的简单示例
json解析在android开发中是非常,常见的fastjson是阿里巴巴的一个库,对于json开发效率很高,我写了一个简单例子
json解析在android开发中是非常,常见的fastjson是阿里巴巴的一个库,对于json开发效率很高,我写了一个简单例子.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
import com.alibaba.fastjson.*; public class JSONEasy extends JspEasy { /*/构造对象 public JSONEasy() { super(); }*/ public JSONEasy(HttpServletRequest request,HttpServletResponse response) { ...
android原生操作json数据 主要是两个类 JSONObject 操作对象 JONSArray操作json数组 对象转json //创建学生对象 Student student=new Student(); student.setAge(23); student.setClazz(六年级);...
fastjson:为Go优化的标准库JSON ... ##例子 import ( "github.com/intel-go/fastjson" "fmt" ) func main () { var jsonBlob = [] byte ( `[ {"Name": "Platypus", "Order": "Monotremata"}, {"Name": "Q
开篇废话 近期利用业余时间,跟着大神把FastJson的框架学习了一下,在这里...下面举一个例子来说明。 public class Book { private int page; private String name; public List<String> authors; public List<
java实现JSON文件读取、JSON文件持续写入,即可以多次将JSON数据写入到JSON文件,且文件不会被覆盖。【JSON.jar】+【JSON文件例子】
一个转换DataTable 到JSON格式数据到客户端进行解析输出的源码例子。
dwr各种例子各种数据类型(包括基本数据类型,实体,List,List,Map,Map,Object>),导入即可用,有注释,方便理解,另附加详细讲解,一看便懂!
fastjson gson jackjson json-lib org.json的使用例子 package ivyy.taobao.com.utils; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import ...
最简单的ztree最简单的后台传前台例子 使用ztree3 0和fastjson 可运行 不缺包 参考网上一播客而写 对初学者有很大帮助
一个基于JSP、Servlet的Echarts3入门小例子(Eclipse JEE工程) 1. json处理使用的FastJson工具 2. 主要是基于Servlet 3. 基于jQuery
jquery实现ajax小例子(资源分高了点,但绝对物超所值) 使用jquery实现XML与JSON同服务器的通信 提供了很多个常见的Ajax特效,学习这几个特效能助您学习jquery 项目中已有相关的包及工具,导入MyEclipse后可直接...
自己写了Fastjson和Gson的例子,多多指教!