JSON笔记1

简介:

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。

JSON 语法规则:
    ● 数据在名称/值对中
    ● 数据由逗号分隔
    ● 花括号保存对象
    ● 方括号保存数组

(1). 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。
(2). 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。

示例:

{
	"employees": [
		{ "firstName":"John" , "lastName":"Doe" },
		{ "firstName":"Anna" , "lastName":"Smith" },
		{ "firstName":"Peter" , "lastName":"Jones" }
	]
}

 JavaScript处理JSON格式数据:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../script/jquery-1.10.1.js"></script>
<style type="text/css">
	
</style>
<title>JavaScript处理JSON格式数据</title>
</head>
<body>
<div>
	<input type="button" id="button1" value="JavaScript处理JSON格式数据" />
	<div id="result" ></div>
</div>
<script type="text/javascript"> 
	var obj = {
		"employees": [
			{ "firstName":"John" , "lastName":"Doe" },
			{ "firstName":"Anna" , "lastName":"Smith" },
			{ "firstName":"Peter" , "lastName":"Jones" }
		]
	};
	$("#button1").click(function() {
		var strResult = "";
		for(var i=0; i<obj.employees.length; i++) {
			strResult += obj.employees[i].firstName + "&nbsp;" + obj.employees[i].lastName + "<br/>";
		}
		$("#result").html(strResult);
	})
</script>
</body>
</html>

 服务器输出JSON格式数据(以Java为例,将Java对象转化为JSON格式数据):

package com.wgc.util;

import java.util.Map;
import java.util.Set;
/*

我们并未对 Java 对象作严格的检查。不被支持的对象(例如 List)将直接抛出 RuntimeException 。
此外,为了保证输出的 JSON 是有效的,Map<String, Object> 对象的 Key 也不能包含特殊字符。
循环引用的对象会引发无限递归

 */
public class JSONUtil {
	//将 String 对象编码为 JSON
	static String string2Json(String s) { 
	   StringBuilder sb = new StringBuilder(s.length()+20); 
	   sb.append('\"'); 
	   for (int i=0; i<s.length(); i++) { 
		   char c = s.charAt(i); 
		   switch (c) { 
		   case '\"': 
			   sb.append("\\\""); 
			   break; 
		   case '\\': 
			   sb.append("\\\\"); 
			   break; 
		   case '/': 
			   sb.append("\\/"); 
			   break; 
		   case '\b': 
			   sb.append("\\b"); 
			   break; 
		   case '\f': 
			   sb.append("\\f"); 
			   break; 
		   case '\n': 
			   sb.append("\\n"); 
			   break; 
		   case '\r': 
			   sb.append("\\r"); 
			   break; 
		   case '\t': 
			   sb.append("\\t"); 
			   break; 
		   default: 
			   sb.append(c); 
		   } 
	   } 
	   sb.append('\"'); 
	   return sb.toString(); 
	} 
	//将Number类型的数据转换成JSON
	static String number2Json(Number number) { 
	   return number.toString(); 
	} 
	//将Boolean类型的数据转换成JSON
	static String boolean2Json(Boolean bool) { 
	   return bool.toString(); 
	} 
	//将数组编码为 JSON 格式
	static String array2Json(Object[] array) { 
	   if (array.length==0) 
		   return "[]"; 
	   StringBuilder sb = new StringBuilder(array.length << 4); 
	   sb.append('['); 
	   for (Object o : array) { 
		   sb.append(toJson(o)); 
		   sb.append(','); 
	   } 
	   // 将最后添加的 ',' 变为 ']': 
	   sb.setCharAt(sb.length()-1, ']'); 
	   return sb.toString(); 
	} 
	//将 Map<String, Object> 编码为 JSON 格式
	static String map2Json(Map<String, Object> map) { 
	   if (map.isEmpty()) 
		   return "{}"; 
	   StringBuilder sb = new StringBuilder(map.size() << 4); 
	   sb.append('{'); 
	   Set<String> keys = map.keySet(); 
	   for (String key : keys) { 
		   Object value = map.get(key); 
		   sb.append('\"'); 
		   sb.append(key); 
		   sb.append('\"'); 
		   sb.append(':'); 
		   sb.append(toJson(value)); 
		   sb.append(','); 
	   } 
	   // 将最后的 ',' 变为 '}': 
	   sb.setCharAt(sb.length()-1, '}'); 
	   return sb.toString(); 
	} 
	//统一处理任意的 Java 对象
	public static String toJson(Object o) { 
	   if (o==null) 
		   return "null"; 
	   if (o instanceof String) 
		   return string2Json((String)o); 
	   if (o instanceof Boolean) 
		   return boolean2Json((Boolean)o); 
	   if (o instanceof Number) 
		   return number2Json((Number)o); 
	   if (o instanceof Map) 
		   return map2Json((Map<String, Object>)o); 
	   if (o instanceof Object[]) 
		   return array2Json((Object[])o); 
	   throw new RuntimeException("Unsupported type: " + o.getClass().getName()); 
	} 
}

 Spring MVC输出JSON:

Spring MVC的MappingJacksonJsonView借助Jackson框架的ObjectMapping将模型数据转换为JSON格式输出。默认情况下,MappingJacksonJsonView会将模型中的所有数据都输出为JSON,这显然是不合适的,可以通过renderedAttributes指定模型中哪些属性需要输出。

<bean id="userListJson" 
	class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" 
	p:renderedAttributes="userList"/>

 

 

你可能感兴趣的:(JSON笔记)