2009-12-12 76 views
0

我想用JSON來表示JS對象,將它們發送給Java程序,反之亦然。 我也想爲其他語言做到這一點。 C#到Java也許?JSON,JS to Java和Vice Versa,以及其他語言

我該怎麼做? (不確定它是否被稱爲序列化或數據綁定)

編輯: 一旦Java對象以JSON表示,這是否意味着JavaScript可以解析它並將其轉換爲相應的JavaScript對象?

+0

JSON庫?或者我錯過了什麼? – jldupont 2009-12-12 03:25:50

+0

感謝大家的回答。在我選擇一個圖書館之後,我應該可以做到這一點。 從閱讀您的意見,我可以看到我的主要問題是,我沒有考慮我正在做什麼。 – Nolan 2009-12-12 22:31:16

回答

0

我會建議使用Gson這一點。它的優點是它非常好地支持泛型和嵌套的bean,並且速度也足夠快。我已經發布了Gson#fromJson()例子轉換一個相當複雜的JSON字符串到Java在這裏:Converting JSON to Java

Gson#toJson()將任何有效的類似JavaBean的對象JSON基本上是小菜一碟:

String json = new Gson().toJson(object); 
response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 
response.getWriter().write(json); 

編輯:一旦Java對象以JSON表示,這是否意味着JavaScript可以解析它並將其轉換爲相應的JavaScript對象?

當然你可以像JS對象一樣訪問它們。如果您還是JS中使用JSON的新手,那麼我可以推薦這個啓動教程:http://www.hunlock.com/blogs/Mastering_JSON_%28_JavaScript_Object_Notation_%29

0

要從JSON轉到Java中的對象,我聽說json-simple工作正常。它將JSON映射到可包含字符串,數字,列表和其他地圖的Java地圖。這比其他一些庫更簡單,它們直接映射到您需要創建的Java對象來表示JSON。

有關大多數主要語言(包括Java和C#)的JSON庫的詳盡列表,請查看json.org

0

您可以使用Google Web Toolkit在javascript和Java之間共享對象。使用GWT,您可以將所有代碼寫入Java中,然後GWT編譯器將處理從JavaScript到Java和副版本的RPC調用的序列化。

+0

如果所有的OP需求都是簡單的JSON序列化和反序列化,那麼GWT是超級技巧。 – 2009-12-12 03:29:31

+0

不一定。 GWT將所有序列化和反序列化抽象出來。我實際上會辯稱完全相反。 GWT似乎是一個非常簡單的解決方案,用於在javascript和java之間傳遞對象。 – Brad 2009-12-12 08:38:25

0

如果你的意思是某種連接(網絡,本地管道等),它將被稱爲數據序列化。你會使用一個庫來編碼你的對象。 json.org有一個可以做你想做的事情的庫的列表。

如果你正在寫一個Java服務器與JS前端,總有GWT,太(我從來沒有用過,但聽說偉大的事情吧)

0

要序列化javascript對象以傳輸到服務器,我已經使用了https://github.com/douglascrockford/JSON-js/blob/master/json2.js。非常好,很容易。

進出的java得到JSON數據,我發現這個庫非常簡單: http://json-lib.sourceforge.net/

創建從JSON JavaScript對象是一個非問題。 JSON是有效的JavaScript。你可以簡單地在它上面運行eval,或者使用一個JavaScript庫,它可以提供一些內置的安全性,這是eval沒有的。