一、 總結
JSON對象是一個無序的"名稱/值"對的集合它開始于“{”,結束于“}”。每一個屬性名和值間用“:”提示,屬性間用“,”分隔。一個數組開始于"[",結束于"]",值之間用","分隔。
數組和List轉換為JSON用JSONArray.fromObject Map、bean、beans(保存在一個List中轉換)轉換為JSON用 JSONObject.fromObject
JSONObject.toBean(JSONObject類型,Class類型) // 轉換為對象(如自定義類對象,Map對象等)
JSON (JavaScript Object Notation)是一種輕量級的數據交換格式,非常適合于服務器與 JavaScript 的交互. JSON 是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON 數據不需要任何特殊的 API 或工具包。Json必需的包(重新導入包后需重啟下,因為這個問題浪費了我好長時間 ,需注意)commons-beanutils.jar commons-lang-2.4.jarcommons-logging-1.1.1.jarjson-lib-2.2.3-jdk13.jarezmorph-1.0.6.jarcommons-collections-3.2.1.jar
<script language="javascript">
function showJSON() {
var user =
{
"username":"andy",
"age":20,
"info": { "tel": "123456", "cellphone": "98765"},
"address":
[
{"city":"beijing","postcode":"222333"},
{"city":"newyork","postcode":"555666"}
]
}
alert(user.username);
alert(user.age);
alert(user.info.cellphone);
user.info["cellphone"]
alert(user.address[0].city);
alert(user.address[0].postcode);
}
</script>
這表示一個user對象,擁有username, age, info, address 等屬性。同樣也可以用JSON來簡單的修改數據,修改上面的例子js 代碼
function showJSON() {
var user =
{
"username":"andy",
"age":20,
"info": { "tel": "123456", "cellphone": "98765"},
"address":
[
{"city":"beijing","postcode":"222333"},
{"city":"newyork","postcode":"555666"}
]
}
user.username = "Tom";
alert(user.username);
}
易錯地方 (注意有無外引號):
function testJson(){
var str = { "name": "Violet", "password": "character" };
alert(typeof(str));
alert(str.password);
alert(obj.toJSONString());
var a=50,b="xxx";
var arr="{id:"+a+",name:'"+b+"'}";
var str2 = '{ "name": "Violet", "password": "character" }';
alert(typeof(str2));
var obj = eval('(' + str2 + ')');
alert(typeof(obj));
alert(obj.name);
}
</script>
JSONObject resultJSON = new JSONObject();
resultJSON.put("param1", 1);
resultJSON.put("param2", 2);
resultJSON.put("param3", 3);
System.out.println(resultJSON);
//{"param1":1,"param2":2,"param3":3}
二、Java代碼轉換成json代碼
1.List集合轉換成json代碼
List list = new ArrayList();list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = 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));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
JSONObject json = JSONObject.fromObject(map);
3.Bean轉換成json代碼
JSONObject jsonObject = JSONObject.fromObject(new JsonBean());
//當是對象的時候 Student student = new Student(); student.setAge(18); student.setName("zhangsan"); student.setSex("male"); JSONObject jsonObject = JSONObject.fromObject(student); System.out.println(jsonObject);//輸出{"age":18,"name":"zhangsan","sex":"male"}
4.數組轉換成json代碼boolean[] boolArray = new boolean[] { true, false, true };JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
**5.beans轉換成json代碼 **
List userInfosList = new ArrayList<UserInfo>();
UserInfo u1 = new UserInfo(); u1.setUserId(10000); u1.setUserName("qqqqq"); u1.setPassword("111111");
UserInfo u2 = new UserInfo();
u2.setUserId(10001);
u2.setUserName("wwwww");
u2.setPassword("222222");
userInfosList.add(u1);
userInfosList.add(u2);
JSONArray json2=JSONArray.fromObject(userInfosList); Iterator it=**json**2.listIterator();
while(it.hasNext()) {
JSONObject obj=(JSONObject)it.next();
UserInfo u=(UserInfo)JSONObject.toBean(obj,UserInfo.class);
System.out.println(u.getPassword());
}
6、String轉JSON
String listStr = "['apple','orange']";
JSONArray json = JSONArray.fromObject(listStr);
三、JSON轉List、Map
JSON轉List
String str = "['apple','orange']";
JSONArray **json** = JSONArray.fromObject(str);
Collection<String> list = JSONArray.toCollection(**json**);
for (String s : list) {
System.out.println(s);
}
JOSN轉Map
String mapStr = "{'age':30,'name':'Michael','baby':['Lucy','Lily']}";
JSONObject **json**3 = JSONObject.fromObject(mapStr);
Map<String, Object> map = (Map) JSONObject.toBean(**json**3, Map.class);
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
四、遍歷JSON數據的兩種常用方式
var **json**={"status":1,"info":"u83b7u53d6u6210u529f","data":[{"id":"4","name":"u77f3u5bb6u5e84","information":"u5e02","Region_id":"3","type":"1"}]}
var data=**json**.data;
for(i=0;i<data.length;i++)
{
document.write("Name:"+data[i].name+",Info:"+data[i].information+"");
}
var **json**=[{"kl_id":"2","kl_title":"Test date1","kl_content":"Test date2","kl_type":"3","id":"6"},{"kl_id":"2","kl_title":"Test1","kl_content":"Test2","kl_type":"1","id":"9"}]
var str = "";
for (var one in **json**)
{
for(var key in **json**[one])
{
str += **json**[one][key] + ",";
}
}
document.write(str);
List list = query.list();
List<String> excList = new ArrayList<String>();
if(list!=null && list.size()>0){
for (int i = 0; i < list.size(); i++) {
Object[] obj = (Object[]) list.get(i);
EipAnalysisServiceExc excR=new EipAnalysisServiceExc();
excR.setId(Long.parseLong(obj[0].toString()));
excR.setServiceName(obj[1]!=null?obj[1].toString():null);
excList.add(JSONObject.fromObject(excR).toString());
}
}
for (int i = 0; i < excList.size(); i++) {
JSONObject jSONObject = JSONObject.fromObject(excList.get(i));
EipAnalysisServiceExc exc = JSONObject.toBean(jSONObject, EipAnalysisServiceExc.class);
}
由JSONObject.fromObject(excR)得到JSONObject對象,然后toString傳輸,再JSONObject.fromObject解析為JSONObject對象
使用JSONObject.toBean(JSONObject類型,Class類型) ,轉換為對象(如自定義類對象,Map對象等) 轉換為類類型