JavaScript json 对象

JavaScript json 对象 http://www.cnblogs.com/tomxu/archive/2012/01/11/2311956.html 深入理解JavaScript系列 (9) : 根本没有"JSON对象"这回事! 前言 写这篇文章的目的是经常看到开发人员说: 把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢。 正文 本文的主题是基于ECMAScript262-3来写的,2011年的262-5新规范增加了JSON对象,和我们平时所说的JSON有关系,但是不是同一个东西,文章最后一节会讲到新增加的JSON对象。 英文原文: http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ 我想给大家澄清一下一个非常普遍的误解,我认为很多JavaScript开发人员都错误地把 JavaScript 对象字面量 (Object Literals) 称为JSON对象 (JSON Objects) ,因为他的语法和JSON规范里描述的一样,但是该规范里也明确地说了JSON只是一个数据交换语言,只有我们将之用在string上下文的时候它才叫JSON。 序列化与反序列化 2个程序 (或服务器、语言等) 需要交互通信的时候,他们倾向于使用string字符串因为string在很多语言里解析的方式都差不多。复杂的数据结构经常需要用到,并且通过各种各样的中括号{},小括号(),叫括号<>和空格来组成,这个字符串仅仅是按照要求规范好的字符。 为此,我们为了描述这些复杂的数据结构作为一个string字符串,制定了标准的规则和语法。JSON只是其中一种语法,它可以在string上下文里描述对象,数组,字符串,数字,布尔型和null,然后通过程序间传输,并且反序列化成所需要的格式。YAML和XML (甚至request params) 也是流行的数据交换格式,但是,我们喜欢JSON,谁叫我们是JavaScript开发人员呢! 字面量 引用Mozilla Developer Center里的几句话,供大家参考: 他们是固定的值,不是变量,让你从"字面上"理解脚本。 (Literals) 字符串字面量是由双引号 (") 或单引号 (’) 包围起来的零个或多个字符组成的。(Strings Literals) 对象字面量是由大括号 ({}) 括起来的零个或多个对象的属性名-值对。(Object Literals) 何时是JSON,何时不是JSON? JSON是设计成描述数据交换格式的,他也有自己的语法,这个语法是JavaScript的一个子集。 { “prop”: “val” } 这样的声明有可能是JavaScript对象字面量也有可能是JSON字符串,取决于什么上下文使用它,如果是用在string上下文 (用单引号或双引号引住,或者从text文件读取) 的话,那它就是JSON字符串,如果是用在对象字面量上下文中,那它就是对象字面量。 // 这是JSON字符串 var foo = ‘{ “prop”: “val” }’; // 这是对象字面量 var bar = { “prop”: “val” }; ...

2015-05-10 · 1 min · 161 words · -

Jackson

Jackson Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。 前面有介绍过json-lib这个框架,在线博文: http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html 相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。而且Jackson社区相对比较活跃,更新速度也比较快。 一、准备工作 下载依赖库jar包 Jackson的jar all下载地址: http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar 然后在工程中导入这个jar包即可开始工作 官方示例: http://wiki.fasterxml.com/JacksonInFiveMinutes 因为下面的程序是用junit测试用例运行的,所以还得添加junit的jar包。版本是junit-4.2.8 如果你需要转换xml,那么还需要stax2-api.jar 测试类基本代码如下 package com.hoo.test; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.codehaus.jackson.JsonEncoding; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.node.JsonNodeFactory; import org.codehaus.jackson.xml.XmlMapper; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.hoo.entity.AccountBean; /** function:Jackson 将java对象转换成JSON字符串,也可以将JSON字符串转换成java对象 jar-lib-version: jackson-all-1.6.2 jettison-1.0.1 @author hoojo @createDate 2010-11-23 下午04:54:53 ...

2014-04-04 · 9 min · 1809 words · -

4款json的java类库, FastJson

4款json的java类库, FastJson JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。 下面介绍四款处理json的java类库: Json-lib、Gson、Jackson、Fastjson FastJson Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。网址: https://github.com/alibaba/fastjson maven依赖配置: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.79</version> </dependency> 示例: 复制代码 public static String bean2Json(Object obj){ return JSON.toJSONString(obj); } VO vo = JSON.parseObject("...", VO.class);``` Json-lib JSON-lib is a java library for transforming beans, maps, collections, java arrays and XML to JSON and back again to beans and DynaBeans. 官网: http://json-lib.sourceforge.net/ ...

2014-03-31 · 5 min · 923 words · -

spring MVC 返回JSON数据(Spring3.0 MVC+Jackson+AJAX)

spring MVC 返回JSON数据 (Spring3.0 MVC+Jackson+AJAX) 本文本的框架为:SpringMVC 3.2.3 \ jackson 1.9.2 传统的返回JSON格式的AJAX,用的方法一般是: 在后台先把数据(Object)封装成JSON数据,再用HttpServletResponse返回。 本示例中,SpringMVC可直接支持JSON格式数据的返回。具体如下。 1、JAR包: SPRINGMVC包需的包,另外还需JACKSON的两个包。 jackson-core-asl-1.9.2.jar jackson-mapper-asl-1.9.2.jar 2、spring-servlet.xml中加入: Java代码 <img alt="收藏代码" src="http://angelbill3.iteye.com/images/icon_star.png" /> <!- 返回JSON模版 -> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" > <property name="messageConverters"> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> </list> </property> </bean> 我们在SPRING的配置中加入了一个新的适配器: AnnotationMethodHandlerAdapter,通过这个适配器,我们配置了一个属性,messageConverters,其中mappingJacksonHttpMessageConverter这个Bean,它就是用来处理json数据转换的。 注: 我的项目中没有乱码现象,这样配即可,若有乱码现象,可以在MappingJacksonHttpMessageConverter的BEAN中配置supportedMediaTypes属性,是用于解决返回的乱码问题。 3、Controller中的使用 Java代码 <img alt="收藏代码" src="http://angelbill3.iteye.com/images/icon_star.png" /> @Controller public class SelectController { @Resource private TypeService typeService; @RequestMapping("/type") @ResponseBody public Object type(){ List<Type> typelist = this.typeService.getTypeByParentid(Const.TYPE_DAILY); return typelist; } } 在SpringMVC中可以在Controller的某个方法上加**@ResponseBody**注解,表示该方法的返回结果直接写入HTTP response body中。 ...

2014-02-21 · 1 min · 129 words · -