這篇文章主要介紹“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í)吧!
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁(yè)設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開(kāi)發(fā)技術(shù)和網(wǎng)頁(yè)設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。創(chuàng)新互聯(lián)專(zhuān)業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站制作(企業(yè)站、成都響應(yīng)式網(wǎng)站建設(shè)、電商門(mén)戶(hù)網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶(hù)體驗(yàn)的提升,我們力求做到極致!
JavaScript 對(duì)象標(biāo)注
實(shí)際上,JavaScript 對(duì)象的大部分都由聯(lián)合數(shù)組、數(shù)字索引數(shù)組、字符串、數(shù)字或者這些類(lèi)型的嵌套組合而成。因?yàn)樗蓄?lèi)型都可以用 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ì)象圖。
這意味著在客戶(hù)端可以避免使用笨拙的 DOM API 對(duì) XML 進(jìn)行導(dǎo)航 —— 只需要分析 JSON 響應(yīng),就會(huì)立即得到可以訪問(wèn)的 JavaScript 對(duì)象圖。但是,首先需要把 JavaBean 變成 JSON。
從 Java 類(lèi)產(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 類(lèi)上創(chuàng)建 toJSONObject() 方法。然后,就可以把 JSONObject 簡(jiǎn)單地序列化成 JSON。清單 8 反映了 清單 1 討論的 XML,顯示了 Order 類(lèi)的 toJSONObject() 實(shí)現(xiàn)。
清單 8. Order 類(lèi)的 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 鍵和值是原生類(lèi)型、String 類(lèi)型或其他 JSON 類(lèi)型。
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()類(lèi)似,區(qū)別在于它把值添加到按照鍵進(jìn)行識(shí)別的索引數(shù)組。清單 9 顯示了如何序列化 JSONObject 并把它寫(xiě)入 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í)際上什么也沒(méi)有做。在這里隱式調(diào)用的 JSONObject 的 toString() 方法做了所有工作。請(qǐng)注意,application/x-json 內(nèi)容類(lèi)型還有一點(diǎn)不確定 —— 在編寫(xiě)這篇文章的時(shí)候,關(guān)于 JSON 應(yīng)當(dāng)屬于什么 MIME 類(lèi)型還沒(méi)有定論。但是,目前 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)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!