当前位置:文档之家› JSON大全总结

JSON大全总结

LinkageError while defining class:Could not be defined due to:(net/sf/json/JSONObject)bad major version at offset=6

java jason包的选择,jason-lib错误"has no getter method":

1,把bean转化为json格式时老提示如下错误:

Exception in thread"main"net.sf.json.JSONException:https://www.doczj.com/doc/d318744293.html,ng.NoSuchMethodException:Property'name'has no getter method

解决:声明bean为public class xxx,必须是public,我用默认类型(class xxx)都不行

2,Exception in thread"main"https://www.doczj.com/doc/d318744293.html,ng.NoSuchMethodError:https://www.doczj.com/doc/d318744293.html,ng.ArrayUtils.toObject([C)[Ljava/lang/Character;

原因:定义属性如下:private char[]options=new char[]{'a','f'};好像不能处理这种类型的

3,private String func1="function(i){return this.options[i];}";

private JSONFunction func2=new JSONFunction(new String[]{"i"},

"return this.options[i];");

转换后显示结果差不多:

{"func1":function(i){return this.options[i];,"func2":function(i){return this.options[i];}}

轻量级和重量级

比较之一是轻/重量级的比较。JSON是轻量级的数据交换格式,言下之意,XML算是重量级的数据格式。这一点确实不错,可是重量级体现在哪些方面呢?何为轻、何为重?什么又算是重量级的应用呢?

如果你只是要表达一个数据结构,把一组数据作为一个整体存放起来或用于传输,那么这就是一个轻量级的应用。无论你有多少数据,都只能算是轻量级的应用。你可以使用JSON,也可以使用XML。当数据量很大的时候,它们都一样的慢。别以为XML是重量级的就会比JSON快。

那么XML的重量机体现在哪儿呢?事实上体现在解析上。XML设计了两种解析方式:DOM和SAX。DOM把一个XML整体解析成一个DOM对象,这一点和JSON把JSON文

字解析成JSON对象是一样的。SAX是一个类似消息驱动的解析方法,不需要把整个文档都解析完就可以对解析出的内容进行处理。每当解析出一个对象时,都会通知到程序的处理代码以处理这个对象。程序也可以随时中止解析。这样,一个大的文档就可以逐步地、一点一点地展现出来。如果在网络上传输数据流,那么在传输的过程中,已传输的部分就已经被处理了。这一点,JSON是做不到的,至少目前的JSON程序组件并没有支持这种解析方法。

所以,JSON和XML的轻/重量级的区别在于:JSON只提供了整体解析方案,而这种方法只在解析较少的数据时才能起到良好效果;而XML提供了对大规模数据的逐步解析方案,这种方案很适用于对大量数据的处理。

JSON定义

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集。JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C,C++,C#,Java,JavaScript,Perl,Python等)的习惯,这些特性使JSON成为理想的数据交换格式。

JSON的结构基于下面两点

? 1."名称/值"对的集合不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等

? 2.值的有序列表多数语言中被理解为数组(array)

JSON使用:

JSON以一种特定的字符串形式来表示JavaScript对象。如果将具有这样一种形式的字符串赋给任意一个JavaScript变量,那么该变量会变成一个对象引用,而这个对象就是字符串所构建出来的,好像有点拗口,我们还是用实例来说明。

这里假设我们需要创建一个User对象,并具有以下属性

?用户ID

?用户名

?用户Email

您可以使用以下JSON形式来表示User对象:

然后如果把这一字符串赋予一个JavaScript变量,那么就可以直接使用对象的任一属性了。

完整代码:

实际使用时可能更复杂一点,比如我们为Name定义更详细的结构,使它具有FirstName和LastName:

完整代码:

现在我们增加一个新的需求,我们某个页面需要一个用户列表,而不仅仅是一个单一的用户信息,那么这里就需要创建一个用户列表数组。下面代码演示了使用JSON形式定义这个用户列表:

完整代码:

事实上除了使用"."引用属性外,我们还可以使用下面语句:

?字符串和数字的定义和C或Java基本一致。

1)Java转换Json数据

JSON-lib这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean。JSONArray jsonArray2=JSONArray.fromObject(list);

JSONObject jsonObject=JSONObject.fromObject(new JsonBean());

JSONObject json=JSONObject.fromObject(map);

2)String to bean

String json="{\"value\":\"xx\",\"row\":1,\"col\":1}";

JSONObject jsonObject=JSONObject.fromString(json);

JsonBean2bean=(JsonBean2)JSONObject.toBean(jsonObject,JsonBean2.class);

3)json to xml

JSONObject json=new JSONObject(true);

String xml=XMLSerializer.write(json);

JSONObject json=JSONObject.fromObject("{\"name\":\"json\",\"bool\":true,\"int\":1}"); String xml=XMLSerializer.write(json);

json

true

1

JSONArray json=JSONArray.fromObject("[1,2,3]");

1

2

3

4)xml to json

JSONArray json=(JSONArray)XMLSerializer.read(xml);

System.out.println(json);

return matrix[i][j];

相关主题
文本预览
相关文档 最新文档