js讀Json,JSON與字串轉化,Java讀JSON

來源:互聯網
上載者:User

1.JS讀JSON

書寫AJAX的時候,經常需要解析從伺服器返回的一串字串,這裡簡單介紹伺服器返回字元的兩種格式,及JS對它們的解析方法。

JSON即JS對象標記(JavaScript Object Notation),是一種以JS聲明對象的方式組合的一串字串。
JS可以按以下方式定義對象:
var obj =

{
     id: 2,
     name: 'n'
 };

alert(obj.name);

這樣就定義了對象 obj, 它有兩個公用屬性id和name,可以用 obj.id 的方式直接存取其屬性值。

從伺服器擷取資料時往往不止一個對象,這就需要用到對象數組,JS中對象數組可以用 [] 來定義,如下:


var objs = [{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}];
alert(objs[0].id);
這樣就定義了對象數組 objs, 它包含兩個對象,可以用索引來訪問,如 objs[0] 將引用到第一個對象。到這裡你或許已經想到伺服器返回的字串格式是怎樣的,但字串畢竟是字串,我們需要將其轉換為可以利用JS操作的變數。這就用到 eval 函數,請看下例:

var objs = eval("[{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}]");
alert(objs[0].id); // return 1
好了,伺服器端你只要以格式:[{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}] 返回字串,在用戶端就可以利用 eval() 執行返回的字串,獲得對象數組。以下用AJAX做一個簡單的例子。用js取json的代碼如下:

       var objs = eval(request.responseText);
       alert(objs.length); // 2
       alert(objs[0].id);  // 1
       alert(objs[1].name);// 'n_2'

再添加一個測試按鈕即可以看到效果:

<input type="button" value="GetJson" onclick="getJson();" />

 

但有時,會遇到Json資料是自己拼接的情況,用js直接讀,發現讀出來的資料都是undefined...也就是說,像

var s = "{name1:'name1',name2:'name2'}";的情況,js是把它當作字串,而不是JSON資料來處理的。所以,需要我們把它轉化為JSON形資料。

注意,如果此時寫:tmp = eval(tmp) 則會報"缺少;"的錯誤。應該是:tmp =eval("(" + tmp + ")");
然後再使用document.getElementById("txt1").value = tmp.name1;就可以了。


另有字串轉化為JSON的方法:   //需要json.js包

var obj = strJSON.parseJSON();
 var obj = JSON.parse(strJSON);

JSON轉化為字串:

  var str = obj.toJSONString();
  var str = JSON.stringify(obj)

2.Java讀取JSON資料:

import java.io.*;
import org.json.*;
public class Demo {
    public static void main(String[] args) throws Exception {
        String str = "{\"a\":\"b\", \"c\":\"d\"}";
        JSONObject a = new JSONObject(str);
        System.out.println(a); // {"c":"d","a":"b"}
        System.out.println(a.get("c")); // d
    }
}

直接把字串作為參數交給JSONObject就行了……


摘自 漂泊小柒的專欄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.