Ⅰ 為什麼很多web應用的api都用json開發,和gsoap+webservice相比,它有哪些優缺點
json和soap+webservice是一種數據交互格式,目前所有的平台都對他們進行支持。json是以鍵值對的形式展現的長串,webservice交互的數據多為xml,就可讀性和可擴展性而言,兩種方式不相上下。編碼的方便程度上json要稍微占點優勢,沒有xml那種多於的標簽對。客戶端在使用json串的的時候,只需要eval(),eval這個函數很多語言都有,比如js,as 等等。在維護方面維護一段xml串比一段json我想難度要大點
Ⅱ java中怎樣解析webservice返回的json數據
json(javascript Object Notation 的縮寫)是一個基於文本的,人類可讀的,開放標準的輕量級數據交換格式。它繼承了javascript中的簡單數據結構和相關數組對象,稱為對象。不管它 和javascript的瓜葛,json是語言獨立的,幾乎所有編程語言都能解析咐笑槐它。
json以鍵值對來表示數據。每個值被一個鍵名字引用(鍵名字是個string)。如果你想以衡友json表示人名,他們的名字將被"name"鍵引用,如下:
「name」 : 「James」
所以json用一種升缺容易被應用程序傳遞的方式表現數據,非常完美。
所以當從webservice解析數據時,你要做的第一件事就是搞清楚你的模型。下面我們會分析webservice的響應數據,搞清楚哪些bit代表對象,對象數組,對象所屬的欄位,等等。
但是json可以表示哪些類型的數據呢?
1.對象是大括弧內的所有東東
2.字元串用雙引號
3.數字只是簡單的顯示,如 12345
4. 數組由中括弧包圍
5.布爾值從'true'和'false'獲得,沒有引號
6.null值由'null'表示,沒有引號
Ⅲ 如何在調用webserver的時候直接返回一個json的數據
當ajax發送請求時,如果設置了contenttype為json,那麼請求webservice時,會自動將返回的內容轉為json的格式,json的格式iruxia {"d":"webservice方法返回的字元串內容"} 這時出現一個問題了,如果方法返回的是一個json格式的字元串,那麼如何獲得實際的json對象,而不是只有一個屬性d的json對象呢? 其實很簡單,我們只需要在success回調函數中eval下jquery通過獲取webservice得到的json對象的d屬性,就可以獲取到實際的json對象了。 如下,如果方法返回的是 {"msg":"其實我也是json對象的字元串"} 這種信息,我們如何獲取到msg這個屬性的值呢? 首先一定要明確的時,調用webservice的方法後實際獲取到的json格式的字元串是這樣的 {"d":"{\"msg\":\"其實我也是json對象的字元串\"}"} ,jquery通過這個字元串生成的json對象只有一個屬性,那就是d,d存儲的是webservice方法返回的json格式的字元串信息,而不是json對象,所以不能通過 obj.d.msg來獲取msg信息。而是需要 var realobj=eval('('+o.d+')')來生成實際的json對象,然後realobj.msg才是需要的信息。 例子如下 test.asmx +展開 -C# using System.Web.Script.Services; using System.Web.Services; namespace WebService35 { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { [WebMethod] [ScriptMethod(UseHttpGet = true)] public string method1() { return "非json字元串";//實際返回的json格式的字元串為 {"d":"非json字元串"} } [WebMethod] [ScriptMethod(UseHttpGet = true)] public string method2() { return "{\"msg\":\"其實我也是json對象的字元串\"}"; //實際返回的json格式的字元串為 {"d":"{\"msg\":\"其實我也是json對象的字元串\"}"} } } }