2016-12-29 212 views
-2

我對C#非常陌生,並且玩過Visual Studio和Xamarin。 我有一個Web服務,而我是從這樣看得到一個JSON結果:如何將JSON轉換爲對象?

{"Vorname": "MYNAME", "AusweisNr": "894", "MitgliedsNr": "33203", "returnstr": "None", "returncode": "0"} 

我想要做的就是用我去填補一些文本字段中的數據,但我不瞭解如何轉換它。我已經玩了一下JsonConvert,但無法正常工作。

+0

你想把它轉換成什麼? –

+0

請不要在您的問題標題中使用井號標籤。 – Stijn

+0

嘿@Phillip。 歡迎來到Stackoverflow。在這裏閱讀關於編寫一個好的SO問題: http:// stackoverflow。COM /幫助/如何對問 – garfbradaz

回答

4

這些屬性創建一個類:

public class SomeMeaningfulName 
{ 
    public string Vorname { get; set; } 
    public string AusweisNr { get; set; } 
    public string MitgliedsNr { get; set; } 
    public string returnstr { get; set; } 
    public string returncode { get; set; } 
} 

然後你就可以反序列化的串入該類:

var myObj = JsonConvert.DeserializeObject<SomeMeaningfulName>(yourJsonString); 
0

您可以創建一個簡單的類是這樣的:

public class Person 
{ 
    public string Vorname { get; set; } 
    public string AusweisNr { get; set; } 
    public string MitgliedsNr { get; set; } 
    public string returnstr { get; set; } 
    public string returncode { get; set; } 
} 

並對其進行反序列化:

string json = "{'Vorname': 'MYNAME', 'AusweisNr': '894', 'MitgliedsNr': '33203', 'returnstr': 'None', 'returncode': '0'}" 
Person person = new JavaScriptSerializer().Deserialize<Person>(json); 

在這種情況下,我使用JavascriptSerializer,因爲它使用起來非常簡單,但你也可以使用JSONConverter如果你真的需要它

0

爲了使用JsonConvert轉換,你需要有與共享領域的一類你的JSON對象的名稱,他們都需要公開。如果你想試試這個

class MyJsonObject 
{ 
    public string Vorname; 
    public int AusweisNr; 
    public int MitgliedsNr; 
    public string returnstr; 
    public int returncode; 
} 

,你也可以把它的公共屬性,而不是一個變量。要轉換,你需要做這樣的事情。

MyJsonObject obj= JsonConvert.DeserializeObject<MyJsonObject>(jsonData); 

其中jsonData是一個包含您的JSON代碼的字符串。然後,您可以將所有數據複製到文本字段。

0

得到你的JSON字符串並設置在這個WebSite中,這個網站會爲你創建一個類對象,把這個對象放到你的項目中。
例如:

public class RootObject // object name 
{ 
    //atributtes names 
    public string Vorname { get; set; } 
    public string AusweisNr { get; set; } 
    public string MitgliedsNr { get; set; } 
    public string returnstr { get; set; } 
    public string returncode { get; set; } 
} 

所以,你會dowloand這個JSON,放在一個字符串VAR 例如:

var Apiurl = "http://youAPI.com/something/something/"; 
var JSONString= new System.Net.WebClient().DownloadString(Apiurl);//this will download all text what the Apiurl return 

之後,你就會把轉換/反序列化JsonString的對象。

RootObject objectJSON = JsonConvert.DeserializeObject<RootObject>(JSONString); 

這最後的代碼發生了什麼?

yourJsonObject nameForThisObject = JsonConvert.DeserializeObject<yourObjectJsonClass>(yourJsonString); 

注意:您的ObjectJsonClass(我的RootObject)必須具有相同的Json屬性。