如何将JSON转换为对象?

时间:2016-12-29 13:34:29

标签: c# json xamarin

我对C#非常陌生并且正在使用Visual Studio和Xamarin。 我有一个Web服务,我从中得到一个JSON结果:

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

我尝试做的是使用我获得的数据来填充一些文本字段,但我不明白如何转换它。我已经在JsonConvert玩了一下但是无法让它发挥作用。

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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

答案 2 :(得分:0)

为了使用JsonConvert进行转换,您需要一个包含共享JSON对象名称的字段的类,并且它们都需要公开。试试这个

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

如果你愿意,你也可以把它变成公共财产而不是变量。要转换,你需要做这样的事情。

jsonData

其中.scrollTo(top, left)是包含您的JSON代码的字符串。然后,您可以将所有数据复制到文本字段。

答案 3 :(得分: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; }
}

因此,您将下载此JSON并输入String 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属性。