1.JSON定义
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。
JSON语法声明了一个对象,是一种用于传输和生成数据的协定
对象:对象包含再{}之间
属性:采用Key-Value对来表示。属性之间使用逗号分开。 string : value
数组:数组存放再[]之间 [ elements ]
元素:元素之间用逗号分开
值:值可以是字符串,数字,对象,数组,true,false,null
{
"name":"andy",
"people":{"name":"andy","age":"28"},
"friend":["name":"value",
{"name":"value","age":"28"}
]
}
3.在服务器上解释 JSON 处理 JSON 的两步骤:
针对编写服务器端程序所用的语言,找到相应的 JSON 解析器/工具箱/帮助器 API。
使用 JSON 解析器/工具箱/帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西
我将介绍如何用 org.json 这个 Java API 在 Java 类上创建 toJSONObject() 方法。然后,就可以把 JSONObject 简单地序列化成 JSON。
public JSONObject toJSONObject() {
JSONObject json = new JSONObject();
json.put("id",id);
json.put("cost",getFormattedCost());
json.put("date",date);
JSONArray jsonItems = new JSONArray();
for (Iterator<Item> iter =
items.iterator() ; iter.hasNext() ; ) {
jsonItems.put(iter.next().toJSONObject());
}
json.put("items",jsonItems);
return json;
}
可以看到,org.json API 非常简单。 JSONObject 代表 JavaScript 对象(即联合数组),有不同的 put() 方法,方法接受的 String 键和值是原生类型、String 类型或其他 JSON 类型。JSONArray 代表索引数组,所以它的 put() 方法只接受一个值。请注意在清单 8 中,创建 jsonItems 数组,然后再用 put() 把它附加到 json 对象上;可以用另外一种方法做这项工作,就是对每个项目调用 json.accumulate("items",iter.next().toJSONObject());。accumulate() 方法与 put() 类似,区别在于它把值添加到按照键进行识别的索引数组。
清单 9 显示了如何序列化 JSONObject 并把它写入 servlet 响应。
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws java.io.IOException, ServletException {
String custId = req.getParameter("username");
Customer customer = getCustomer(custId);
res.setContentType("application/x-json");
res.getWriter().print(customer.toJSONObject());
}
可以看到,它实际上什么也没有做。在这里隐式调用的 JSONObject 的 toString() 方法做了所有工作。请注意,application/x-json 内容类型还有一点不确定 —— 在编写这篇文章的时候,关于 JSON 应当属于什么 MIME 类型还没有定论。但是,目前 application/x-json 是合理的选择。
4.在客户端使用JSON
----通过 GET 以名称/值对发送 JSON