`
longying2008
  • 浏览: 302014 次
社区版块
存档分类
最新评论

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"/>

 

 

分享到:
评论

相关推荐

    Ajax&Json笔记

    1. **创建JSON对象**:使用大括号`{}`表示对象,花括号`[]`表示数组,键值对之间用逗号分隔,如`{"name": "John", "age": 30, "city": "New York"}`。 2. **序列化和反序列化**:在JavaScript中,`JSON.stringify()`...

    json笔记 详细注释

    json_笔记

    Json学习笔记

    ### JSON学习笔记:深入了解JSON与Spring框架中的初始化机制 #### JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以其简洁性和易读性而著称,不仅适用于人眼阅读,也便于机器解析和...

    XML&JSON笔记.docx

    XML&JSON笔记.docx

    json-lib 学习笔记 分享下

    这个学习笔记主要围绕`json-lib`的使用方法和关键特性进行阐述。 首先,`json-lib`支持多种Java对象到JSON的转换,包括基本类型、数组、集合、Map以及自定义的Java类。例如,你可以通过以下方式将一个HashMap转换为...

    WCF返回JSON学习笔记

    ### WCF返回JSON学习笔记 #### 一、WCF与JSON简介 - **WCF (Windows Communication Foundation)**:是微软开发的一个框架,用于构建服务导向的应用程序。它提供了多种通信协议的支持,包括HTTP、TCP等,并且支持...

    json 学习笔记 相关知识点

    ### JSON学习笔记:深入理解与应用 #### 一、JSON简介与重要性 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于ECMAScript的一个子集,采用...

    JSON_ajax笔记1

    1. **JavaBean和JSON的互换**:可以通过库如Gson或Jackson,将JavaBean对象序列化为JSON字符串,或者将JSON字符串反序列化为JavaBean对象。 2. **List和JSON的互换**:同样,通过库的辅助,可以将List对象转换为JSON...

    Ajax和Json的笔记

    Ajax和Json的笔记

    《Jackson 框架,轻易转换JSON》学习笔记

    本篇学习笔记将深入探讨Jackson框架的核心概念和使用方法,帮助你轻松应对JSON与Java对象之间的转换。 1. Jackson简介 Jackson是由FasterXML团队开发的一个开源项目,其主要目标是提供高性能、高效率的JSON处理功能...

    JavaScript数组对象JSON学习笔记

    ### JavaScript 数组对象 JSON 学习笔记 #### 一、JavaScript 数组操作 在 JavaScript 中,数组是一种常用的数据结构,用于存储多个值。本部分主要介绍如何创建数组、访问数组元素以及对数组进行各种操作。 #####...

    json 学习笔记_20140116.pdf

    在本文档《json 学习笔记_***.pdf》中,主要介绍了在Java开发中,如何使用三个常用的JSON处理工具:struts json,json_lib,jackson-mapper。同时,也提到了在使用这些工具时可能遇到的一些常见错误及其处理方法。 ...

    《JSON-lib框架,转换JSON、XML不再困难》学习笔记

    1. JSON基础:JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但与编程语言无关。JSON数据结构主要包括对象(键值对的集合,用花括号{}包围)和数组...

    笔记附件_localConfig.json

    笔记附件_localConfig.json

    javascript中的数组对象以及json学习笔记

    这篇学习笔记将深入探讨这两种数据结构的特性和用法。 首先,我们来了解JavaScript中的数组对象。数组是一种有序的数据集合,可以存储任意类型的数据,包括数字、字符串、对象等。在JavaScript中,数组是对象的一种...

    json学习笔记、jackson的jar包

    1. JSON基本概念: - JSON是一种文本格式,易于人阅读和编写,同时也易于机器解析和生成。 - JSON数据结构主要由对象(键值对的集合,用花括号{}包围)和数组(有序元素列表,用方括号[]包围)组成。 - 对象中的...

    JSON学习笔记

    1. JSON的基本结构:JSON数据由键值对(key-value pairs)组成,键和值之间用冒号隔开,键值对之间用逗号分隔。键必须是字符串,而值可以是字符串、数字、布尔值、数组、对象或者null。 2. JSON的数据类型:字符串...

    【HTML+CSS+JS+JSON+ES6笔记】.zip

    笔记可能讲解JSON的基本语法,如何在JavaScript中解析和生成JSON,以及JSON在前后端数据传输中的应用。 ES6(ECMAScript 2015)是JavaScript的第六版标准,引入了许多新特性,提高了代码的简洁性和可读性。笔记可能...

    【开源实战笔记】APIJSON对clickhouse数据库删除修改的支持1

    ALTER TABLE [db.]table UPDATE column1 = expr1 [, ...] WHERE filter_expr ALTER TABLE [db.]table [ON CLUSTER cluster] DELETE WHERE filter_expr 可以看出,ClickHouse的删除修改语句以ALTER TABLE开头,而...

    JSON_ajax笔记2

    1. JSON在JavaScript中的使用 JSON数据由键值对组成,被花括号包围。每个键值对由双引号包裹,键和值之间用冒号分隔,不同键值对间用逗号分隔。例如: ```javascript var jsonObj = { "key1": 12, "key2": "abc...

Global site tag (gtag.js) - Google Analytics