JSON

【简明教程】JSON(2)

字号+ 作者:H5之家 来源:H5之家 2017-03-08 12:03 我要评论( )

JSONView JSONView是一个FireFox和Chrome上的插件,能够很好地将JSON数据打印出来,从而大大提高了JSON数据的可读性。 JSON与AJAX AJAX可能是使用JSON数据中最常见的场景了。下面的这段代码示例,通过jQuery来调用


JSONView

JSONView是一个FireFox和Chrome上的插件,能够很好地将JSON数据打印出来,从而大大提高了JSON数据的可读性。


JSON与AJAX

AJAX可能是使用JSON数据中最常见的场景了。下面的这段代码示例,通过jQuery来调用一个REST风格的Web Service,并处理返回的JSON对象。

$.getJSON(‘’, function(data) { var address = JSON.parse(data); console.log(“Address Line 1 = “ + address.line1); } );

在上面的这段代码中,$getJSON(这是一种jQuery中$.ajax()标准调用的一种缩写形式)会发起一个HTTP GET 请求,调用Web Service,之后在它的隐式回调函数中,获取返回的data数据,并通过JSON.parse()方法将返回的数据转换为JSON对象。之后便可以像获取普通属性那样(address.line1)获取对象的属性数值了。

JSON与JAVA

Jackson是JAVA中用来处理JSON的一个第三方库。它很有名,并且提供了一组非常好用的JSON API。下面就是它的一个例子:

import java.io.Writer; import java.io.StringWriter; import org.codehaus.jackson.map.ObjectMapper; public class Address { private String line1; private String city; private String stateOrProvince; private String zipOrPostalCode; private String country; public Address() {} public String getLine1() { return line1; } public void setLine1(line1) { this.line1 = line1; } // Remaining getters and setters ... } Address addrOut = new Address(); // Call setters to populate addrOut … ObjectMapper mapper = new ObjectMapper(); // Reuse this. // Marshal Address object to JSON String. Writer writer = new StringWriter(); mapper.writeValue(writer, addrOut); System.out.println(writer.toString()); // Unmarshal Address object from JSON String. String addrJsonStr = “{“ + “\”address\” : {“ + “\”line1\” : \”555 Main Street\”,” + “\”city\” : \”Denver\”,” “\”stateOrProvince\” : \”CO\”,” “\”zipOrPostalCode\” : \”80202\”,” + “\”country\” : \”USA\”” + “}” + “}”; Address addrIn = mapper.readValue(addrJsonStr, Address.class);

除了Jackson之外,还有一些其他基于JAVA的第三方JSON API库。

API Source

Google GSON

SOJO

org.json (by DouglasCrockford)

json-lib

json-io

jsontools

jsonbeans

JSON与RUBY

Ruby中也有很多与JSON相关的第三方库,而JSON gem是Ruby自带的,下面就是它的用法:

require ‘json’ class Address attr_accessor :line1, :city, :state_or_province, :zip_or_postal_code, :country def initialize(line1=’’, city=’’, state_or_province=’’, zip_or_postal_code=’’, country=’’) @line1 = line1 @city = city @state_or_province = state_or_province @zip_or_postal_code = zip_or_postal_code @country = country end def to_json to_hash.to_json end def from_json!(str) JSON.parse(str).each { |var, val| send(“#{var}=”, val) } end private def to_hash Hash[instance_variables.map { |var| [var[1..-1].to_sym, send(var[1..-1])] }] end end

JSON gem的to_json方法将字符串或哈希转换为JSON。Address对象的to_json方法通过将它的成员转换成哈希再对哈希值调用to_json,最终将一个Address对象转换为JSON格式。

addr1 = Address.new(‘555 Main Street’, ‘Denver’, ‘CO’, ‘80231’, ‘US’) puts addr1.to_json # Outputs the following … {“line1”:”555 Main Street”,”city”:”Denver”,”state_or_ province”:”CO”,”zip_or_postal_code”:”80231”,”country”:”US”}

JSON gem的JSON.pase方法则将JSON字符串转换为哈希。Address对象的from_jason!方法接收一个JSON字符串,然后调用JSON.parse来转换哈希,然后再在对象上分别设置这些哈希的值。

json_addr = <<END { “line1” : “999 Broadway”, “city” : “Anytown”, “state_or_province” : “CA”, “zip_or_postal_code” : “90210”, “country” : “USA” } END addr2 = Address.new addr2.from_json!(json_addr)

除了JSON gem之外,还有以下一些Ruby的JSON第三方库

API Source

ActiveSupport JSON

Yajl https://github.com/brianmario/yajl-ruby

Oj https://github.com/ohler55/oj

JSON与RUBY ON RAILS

Ruby on Rails也提供了将Ruby对象转换为JSON的功能。下面的例子中的Controller使用了render方法将一个Ruby对象以JSON数据的格式进行输出。

Rails中的ApplicationController会负责对象与JSON数据之间的互相转换 。因此,不需要额外调用to_json方法。

JSON SCHEMA

JSON Schema用来定义JSON文档的结构,它可以被用来验证和校验发送或收到的JSON文档是否有效和规范。JSON Schema本身也是用JSON格式编写的,它的具体定义可以参考。

下面是JSON Schema的部分结构定义:

结构 描述

type 对象的数据类型,如Object,array,string,number 等

$schema 提供Schema版本的URI

required true/false

id 数据元素id

properties 数据元素的校验属性,包括最大值,最小值,枚举等

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 解析JSON时注意的相关问题进行学习

    解析JSON时注意的相关问题进行学习

    2017-03-08 12:05

  • Android中gson、jsonobject解析JSON的方法详解

    Android中gson、jsonobject解析JSON的方法详解

    2017-03-07 17:02

  • 解决SpringMVC 返回Java8 时间JSON数据的格式化问题处理

    解决SpringMVC 返回Java8 时间JSON数据的格式化问题处理

    2017-03-07 10:23

  • JSON工具学习记录--FastJSON

    JSON工具学习记录--FastJSON

    2017-03-05 11:02

网友点评
)