2013-08-19 91 views
0

我有ASP.NET webservice,它以JSON格式返回Person對象。請看下面的web服務代碼:如何在android中解析這個JSON(從.NET webservice返回)

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public Person person() { 

    Person me = new Person(); 
    me.name = "Mark"; 
    me.lastname = "Brawn"; 

    return me; 
} 


public class Person { 

public String name; 
public String lastname; 
} 

然後我試圖解析在Android客戶端這種答覆,我獲得以下JSON輸出:

{ 
"d": { 
    "__type": "WebService+Person", 
    "name": "Mark", 
    "lastname": "Brawn" 
} 

}

此輸出似乎有效的JSON格式,但我想知道如何從這個輸出(姓名,姓氏)正確獲取屬性。

在Android中我分析這個輸出:

JSONObject json = new JSONObject(result); 
json.getString("name"); 

但我得到一個異常:

07-12 19:07:14.708: W/System.err(21575): org.json.JSONException: No value for name 

所以其實我想得值「名」,並從這個「姓」 JSON。任何幫助appriciated。

回答

1

由「result」創建的JSON對象可能是父對象JSON,而"name"位於嵌套的JSON對象中。嘗試json.getObject("d").getString("name")

+0

其實它的工作原理:)。但我很困惑。爲什麼ASP.NET webservice返回這種JSON?爲什麼不只是「姓名」和「姓氏」屬性? – rootpanthera

+0

不確定,這是創建ASP.NET Web服務的開發人員的問題。請接受除了upvote之外的答案。 – Quadddd

+0

奇怪。因爲我在Android中看到了很多關於解析JSON的示例代碼,但是我從來沒有見過類似於我的輸出(以及類似於你的解決方案)。但是好的,至少它是有效的。謝謝! – rootpanthera