溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JavaScript對(duì)象標(biāo)注的方法是什么

發(fā)布時(shí)間:2021-12-31 10:07:05 來(lái)源:億速云 閱讀:142 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹“JavaScript對(duì)象標(biāo)注的方法是什么”,在日常操作中,相信很多人在JavaScript對(duì)象標(biāo)注的方法是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”JavaScript對(duì)象標(biāo)注的方法是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

JavaScript 對(duì)象標(biāo)注

實(shí)際上,JavaScript 對(duì)象的大部分都由聯(lián)合數(shù)組、數(shù)字索引數(shù)組、字符串、數(shù)字或者這些類型的嵌套組合而成。因?yàn)樗蓄愋投伎梢杂?JavaScript 直接聲明,所以可以在一條語(yǔ)句中靜態(tài)地定義對(duì)象圖。

清單 7 使用 JSON 語(yǔ)法聲明了一個(gè)對(duì)象,并演示了如何訪問(wèn)這個(gè)對(duì)象。大括號(hào)表示聯(lián)合數(shù)組(即對(duì)象),它的鍵 -值組合由逗號(hào)分隔。方括號(hào)表示數(shù)字索引數(shù)組。

清單 7. 用 JSON 在 JavaScript 中直接聲明一個(gè)簡(jiǎn)單對(duì)象

var band = 

{

name: "The Beatles",

members: [

{

name: "John",

instruments: 

["Vocals","Guitar","Piano"]

},

{

name: "Paul",

instruments: 

["Vocals","Bass","Piano","Guitar"]

},

{

name: "George",

instruments:

["Guitar","Vocals"]

},

{

name: "Ringo",

instruments: 

["Drums","Vocals"]

}

]

};

// Interrogate the band object

var musician = band.members[3];

alert( musician.name

+ " played " + 

musician.instruments[0] 

+ " with " + 

band.name );



既然 JSON 是一個(gè)有趣的語(yǔ)言特性,那么它對(duì) Ajax 有什么意義呢?妙處在于可以用 JSON 在 Ajax 服務(wù)器響應(yīng)中通過(guò)網(wǎng)絡(luò)發(fā)送 JavaScript 對(duì)象圖。

這意味著在客戶端可以避免使用笨拙的 DOM API 對(duì) XML 進(jìn)行導(dǎo)航 —— 只需要分析 JSON 響應(yīng),就會(huì)立即得到可以訪問(wèn)的 JavaScript 對(duì)象圖。但是,首先需要把 JavaBean 變成 JSON。

從 Java 類產(chǎn)生 JSON


不同 XML 生成技術(shù)所具有的優(yōu)缺點(diǎn)也適用于 JSON 的產(chǎn)生。而且可以證明,存在需要再次使用表示模板技術(shù)的情況。但是,使用 JSON 在理念上更接近于在應(yīng)用層之間傳遞序列化的對(duì)象,而不是創(chuàng)建應(yīng)用程序狀態(tài)的視圖。

我將介紹如何用 org.json 這個(gè) Java API 在 Java 類上創(chuàng)建 toJSONObject() 方法。然后,就可以把 JSONObject 簡(jiǎn)單地序列化成 JSON。清單 8 反映了 清單 1 討論的 XML,顯示了 Order 類的 toJSONObject() 實(shí)現(xiàn)。

清單 8. Order 類的 toJSONObject() 方法實(shí)現(xiàn)

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



可以看到,org.json API 非常簡(jiǎn)單。 JSONObject 代表 JavaScript 對(duì)象(即聯(lián)合數(shù)組),有不同的 put() 方法,方法接受的 String 鍵和值是原生類型、String 類型或其他 JSON 類型。

JSONArray 代表索引數(shù)組,所以它的 put() 方法只接受一個(gè)值。請(qǐng)注意在清單 8 中,創(chuàng)建 jsonItems 數(shù)組,然后再用 put() 把它附加到 json 對(duì)象上;可以用另外一種方法做這項(xiàng)工作,就是對(duì)每個(gè)項(xiàng)目調(diào)用:

json.accumulate("items",

iter.next().toJSONObject());

accumulate() 方法與 put()類似,區(qū)別在于它把值添加到按照鍵進(jìn)行識(shí)別的索引數(shù)組。清單 9 顯示了如何序列化 JSONObject 并把它寫入 servlet 響應(yīng)。

清單 9. 從 JSONObject 生成序列化的 JSON 響應(yīng)

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());

}

可以看到,它實(shí)際上什么也沒有做。在這里隱式調(diào)用的 JSONObject 的 toString() 方法做了所有工作。請(qǐng)注意,application/x-json 內(nèi)容類型還有一點(diǎn)不確定 —— 在編寫這篇文章的時(shí)候,關(guān)于 JSON 應(yīng)當(dāng)屬于什么 MIME 類型還沒有定論。但是,目前 application/x-json 是合理的選擇。清單 10 顯示了這個(gè) servlet 代碼的示例響應(yīng)。

清單 10. Customer bean 的 JSON 表示

{

"orders": 

[

{

"items": 

[

{

"price": "$49.99",

"description": "

512 Megabyte Type 1 CompactFlash card. 

Manufactured by Oolong Industries",

"name": "Oolong 512MB CF Card",

"id": "i-55768"

},

{

"price": "$299.99",

"description": "

7.2 Megapixel digital camera featuring six 

shooting modes and 3x optical zoom. Silver.",

"name": "Fujak Superpix72 Camera",

"id": "i-74491"

}

],

"date": "08-26-2005",

"cost": "$349.98",

"id": "o-11123"

}

],

"realname": "James Hyrax",

"username": "jimmy66"

}

到此,關(guān)于“JavaScript對(duì)象標(biāo)注的方法是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI