2016-12-29 138 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属性。