人人IT網

人人IT網

當前位置: 主頁 > JAVA編程 > JAVA >

JSON簡介與JS解析JSON

時間:2016-11-25 19:40來源:Internet 作者:Internet 點擊:
一、首先什麼是JSON: JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation) JSON 是輕量級的文本數據交換格式 JSON 獨立於語言 JSO

一、首先什麼是JSON:
JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation)
JSON 是輕量級的文本數據交換格式
JSON 獨立於語言
JSON 具有自我描述性,更易理解
JSON 使用 JavaScript 語法來描述數據對象,但是 JSON 仍然獨立於語言和平台。JSON 解析器和 JSON 庫支持許多不同的編程語言
二、如何解析:
JavaScript程序能夠使用內建的 eval() 函數用 JSON 數據來生成原生的 JavaScript。主流瀏覽器都是支持該函數的。
類似 XML:
JSON 是純文本
JSON 具有“自我描述性”(人類可讀)
JSON 具有層級結構(值中存在值)
JSON 可通過 JavaScript 進行解析
JSON 數據可使用 AJAX 進行傳輸
三、相比 XML 的不同之處:
沒有結束標簽
更短
讀寫的速度更快
能夠使用內建的 JavaScript eval() 方法進行解析
使用數組
不使用保留字
四、JSON 語法規則:
數據在名稱/值對中
數據由逗號分隔
花括號保存對象
方括號保存數組
JSON 值可以是:
數字(整數或浮點數)
字符串(在雙引號中)
邏輯值(true 或 false)
數組(在方括號中)
對象(在花括號中)
null
JSON 文件:
JSON 文件的文件類型是 ".json"
JSON 文本的 MIME 類型是 "application/json"
五、JSON的應用
對於 eval() 函數,他是JS中的一個方法,可計算某個字符串,並執行其中的的 JavaScript 代碼。
該方法只接受原始字符串作为参數,如果 string 参數不是原始字符串,那麼該方法將不作任何改變地返回。因此請不要为 eval() 函數傳遞 String 對象來作为参數。
如果試圖覆蓋 eval 屬性或把 eval() 方法賦予另一個屬性,並通過該屬性調用它,則 ECMAScript 實現允許拋出一個 EvalError 異常。
可以做幾個例子來說明一下他的使用:
會輸出以下內容:
200
4
27
這就像你给了一條SQL語句然後執行返回結果一样。
對於参數的合法檢測,可以使用以下代碼:
try  {
     alert("Result:" + eval(prompt("Enter an expression:","")));
}catch(exception) {
     alert(exception);
}
一般來說,對於JSON的應用,都是前台使用AJAX請求,後台要返回的對象集合使用JSON來表達傳遞到前台。
我們來做一個Servlet,他返回一個JSON字符串给前台:
package com;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@SuppressWarnings("serial")
public class ServiceAjax extends HttpServlet {
public ServiceAjax() {
  super();
}
public void destroy() {
  super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException { 
  request.setCharacterEncoding("UTF-8");
  response.setCharacterEncoding("UTF-8");
  PrintWriter out = response.getWriter();
  out.write("[{id:1,name:'cui'},{id:2,name:'su'},{id:3,name:'qiang'}]");
  out.flush();
  out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doGet(request, response);
}
public void init() throws ServletException {
}
}
前台接收到返回的字符後使用eval()進行解析,然後彈出其內容:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"http://3211416697.iteye.com/";
%>
 

From:ITEYE
頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
評價:
表情:
驗證碼:點擊我更換圖片
欄目列表
推薦內容