這篇文章主要介紹“JavaScript對象標注的方法是什么”,在日常操作中,相信很多人在JavaScript對象標注的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JavaScript對象標注的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
JavaScript 對象標注
實際上,JavaScript 對象的大部分都由聯合數組、數字索引數組、字符串、數字或者這些類型的嵌套組合而成。因為所有類型都可以用 JavaScript 直接聲明,所以可以在一條語句中靜態地定義對象圖。
清單 7 使用 JSON 語法聲明了一個對象,并演示了如何訪問這個對象。大括號表示聯合數組(即對象),它的鍵 -值組合由逗號分隔。方括號表示數字索引數組。
清單 7. 用 JSON 在 JavaScript 中直接聲明一個簡單對象
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 是一個有趣的語言特性,那么它對 Ajax 有什么意義呢?妙處在于可以用 JSON 在 Ajax 服務器響應中通過網絡發送 JavaScript 對象圖。
這意味著在客戶端可以避免使用笨拙的 DOM API 對 XML 進行導航 —— 只需要分析 JSON 響應,就會立即得到可以訪問的 JavaScript 對象圖。但是,首先需要把 JavaBean 變成 JSON。
從 Java 類產生 JSON
不同 XML 生成技術所具有的優缺點也適用于 JSON 的產生。而且可以證明,存在需要再次使用表示模板技術的情況。但是,使用 JSON 在理念上更接近于在應用層之間傳遞序列化的對象,而不是創建應用程序狀態的視圖。
我將介紹如何用 org.json 這個 Java API 在 Java 類上創建 toJSONObject() 方法。然后,就可以把 JSONObject 簡單地序列化成 JSON。清單 8 反映了 清單 1 討論的 XML,顯示了 Order 類的 toJSONObject() 實現。
清單 8. Order 類的 toJSONObject() 方法實現
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 非常簡單。 JSONObject 代表 JavaScript 對象(即聯合數組),有不同的 put() 方法,方法接受的 String 鍵和值是原生類型、String 類型或其他 JSON 類型。
JSONArray 代表索引數組,所以它的 put() 方法只接受一個值。請注意在清單 8 中,創建 jsonItems 數組,然后再用 put() 把它附加到 json 對象上;可以用另外一種方法做這項工作,就是對每個項目調用:
json.accumulate("items",
iter.next().toJSONObject()); |
accumulate() 方法與 put()類似,區別在于它把值添加到按照鍵進行識別的索引數組。清單 9 顯示了如何序列化 JSONObject 并把它寫入 servlet 響應。
清單 9. 從 JSONObject 生成序列化的 JSON 響應
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 是合理的選擇。清單 10 顯示了這個 servlet 代碼的示例響應。
清單 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"
} |
到此,關于“JavaScript對象標注的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。