`

JSON 基础(转)

    博客分类:
  • java
 
阅读更多

按照最简单的形式,可以用下面这样的 JSON 表示名称 / 值对:
{ "firstName": "Brett" }

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }

{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]}

{ "programmers": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
]
}

JSON语法格式


对象:对象包含在{}之间
属性:采用Key-Value对来表示。属性之间使用逗号分开。string : value
数组:数组存放在[]之间[elements]
元素:元素之间用逗号分开
值:值可以是字符串,数字,对象,数组,true,false,null


处理JSON数据
要应用JSON,你需要像处理XML一样对JSON格式的数据进行解析。
由于其设计简单,Javascrīpt内置的eval()过程可以很方便地对JSON进行解析。
如下面的代码片断所示:
var testObject = eval('(' + json_data + ')');


解析JSON例子
<html>
<head>
<meta name="vs_defaultClientscrīpt" content="Javascrīpt">
<script type='text/javascript'>
function jsontest() {
//json格式字符串
var jsontext = "{"man":{"weight":"75kg","age":"24"},"ar":["1","2","3","4"]}" ;
//解析json
var aman = eval('('+jsontext+')');
alert(aman.man.weight);

//JSON是JavaScript原生格式,处理JSON格式的数据不需要使用任何额外的工具包或API
//JSON对象
var json = {"man":{"weight":"75kg","age":"24"},"ar":["1","2","3","4"]};
alert(json.man.age);
//修改JSON数据 可以用.和[]导航
json.man.age = 50;
alert(json.man.age);//修改后的值
alert(json.ar[0]);
}
</script>
</head>
<body onload="jsontest();">
</body>
</html>

JSON应用(java&javascript)
1.下载相关的JSON相关jar包( http://json-lib.sourceforge.net/ )
WEB-INF/lib 添加如下jar
json-lib-2.2.3-jdk15.jar
jakarta commons-lang 2.4
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1.1
ezmorph 1.0.6

需用到json、xml之间的转换需要 xom-1.1.jar
2.下载 相关的 js
json.js


有两种需求,一种是 从java 转 js ,二是从 js 到 java ,
不管哪种需求,先 在 java 端把相应的类建好,例如


(一)如果从 java 到 js ,则 新建 java对象
import net.sf.json.JSONObject;

public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) throws Exception{
User user = new User();
user.setName("张山");
JSONObject json = JSONObject.fromObject(user);//将普通对象转换成JSON对象
String text = json.toString();//将JSON对象转换成字符串
System.out.println(text);//可以将此字符串返回给前台JS
}
/**
* 在 js端引入json.js,然后对得到的字符串text 使用
* var jsObj = JSON.parse(text);
* 便得到了 js端的对象jsObj,再直接对
* var name = jsObj.name;
* 就可以了得到 user 的 name 的值 "张三" 了;
*/

/**
* 也可在 js端用函数eval('('+xmlHttp.responseText+')')将后台传过来的字符串转换对象
* var jsObj = eval('('+xmlHttp.responseText+')')
* 便得到了 js端的对象jsObj,再直接对
* var name = jsObj.name;
* 就可以了得到 user 的 name 的值 "张三" 了;
*/

}

java转换json对象常用方法

Java代码转换成json代码
1.List集合转换成json代码
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray = JSONArray.fromObject( list );

2.Map集合转换成json代码
Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
JSONObject jsonMap = JSONObject.fromObject(map);

3.Bean转换成json代码
JSONObject jsonObject = JSONObject.fromObject(new JsonBean());

4.数组转换成json代码
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);

5. 一般数据转换成json代码
JSONArray jsonArray = JSONArray.fromObject("['json','is','easy']" );

6.json数据过滤
适合一个对象有很多属性,而前台只需要个别属性时。
如person对象有id,name,password,email属性,前台只需要name属性
Person p1 = new Person(1,"ljh1","111111","12000380811");
JsonConfig config = new JsonConfig();
config.setExcludes(new String[]{"id","password","email"});//排除相应的属性

JSONObject obj = JSONObject.fromObject(p1,config);

 

(二) 如果从 js 到 java , 则在js端,
var jsObj = new Object();
jsObj.name = "张三";
然后用
var text = JSON.stringify(jsObj);
alert(text);
得到字符串text,再把text传给 java ,
java 拿到 text 后
JSONObject jso = JSONObject.fromObject(text);
User user= (User) jso.toBean(jso, User.class);
便可以得到 user 对象了
(如果不需要转化为User类型或者没有对应的User类,则可直接用 jso.get(key);来取值)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics