反序列化json对象xamarin android c#

反序列化json对象xamarin android c#,c#,json,serialization,xamarin.android,C#,Json,Serialization,Xamarin.android,我对反序列化json对象没有什么问题。 来自http url的我的json: 我不知道如何反序列化来动态创建按钮。我知道如何用文本创建按钮,但我不知道如何用它们拥有的选项来创建按钮。我试图在Windows窗体应用程序中获取这些选项进行测试,但应用程序将崩溃。感谢您的帮助。使用: 您还可以创建配对类并使用泛型: public JsonClass { // Do this for each property you want to map. [JsonProperty(Proper

我对反序列化json对象没有什么问题。 来自http url的我的json:

我不知道如何反序列化来动态创建按钮。我知道如何用文本创建按钮,但我不知道如何用它们拥有的选项来创建按钮。我试图在Windows窗体应用程序中获取这些选项进行测试,但应用程序将崩溃。感谢您的帮助。

使用:

您还可以创建配对类并使用泛型:

public JsonClass {
    // Do this for each property you want to map.
    [JsonProperty(PropertyName="id")]
    public int Id { get; set; }

    [JsonProperty(PropertyName="name")]
    public int Name { get; set; }

    [JsonProperty(PropertyName="type")]
    public MessageType Message { get; set; }
}

public class MessageType {
    [JsonProperty(PropertyName="id")]
    public int Id { get; set; }
    // etc...
}
然后做:

JsonClass obj = JsonConvert.DeserializeObject<JsonClass>(json);
MessageType messageType = obj.Message;
JsonClass obj=JsonConvert.DeserializeObject(json);
MessageType MessageType=obj.Message;

您的类应该是:

public class Type
{
    public int id { get; set; }
    public string name { get; set; }
    public bool closedQuestion { get; set; }
    public bool multiAnswer {get; set;}
    public bool usesImage {get; set; }
}
public class RootObject
{
    public int id { get; set; }
    public string name { get; set; }
    public Type type { get; set; }
    public List<string> options { get; set; }
}
公共类类型
{
公共int id{get;set;}
公共字符串名称{get;set;}
公共布尔闭合问题{get;set;}
公共布尔多重应答{get;set;}
公共bool usesImage{get;set;}
}
公共类根对象
{
公共int id{get;set;}
公共字符串名称{get;set;}
公共类型类型{get;set;}
公共列表选项{get;set;}
}
然后,您应该能够使用Newtonsoft.json反序列化json:

List<RootObject> myData = JsonConvert.DeserializeObject<List<RootObject>>(json);
List myData=JsonConvert.DeserializeObject(json);

太棒了!因此,使用我编写的示例类,将正确的
[JsonProperty(PropertyName=“XXX”)]
属性放在每个属性之上
XXX
替换为值的JSON名称。因此,对于这个JSON字符串:
{name:“Nick”,age:“21”}
,我们将有以下内容:
[JsonProperty(PropertyName=“name”)]
公共字符串名称{get;set;}
之上。有用的提示:用于从有效的JSON字符串获取C#类和属性。只需复制/粘贴,您将获得代码,以便为
JsonConvert
创建类,以
反序列化
to@NickBull没问题:)使用大量API和web服务当然有其用途!XML也有类似的例子——万一将来您需要将XML反序列化为C#objects:为了彻底解决这个问题,Visual Studio(2010年及以后)有能力在本机上实现这一点!(我才发现这一点)。单击
编辑
粘贴特殊
将JSON(或XML)粘贴为类
(如果您在.cs文件中)。我以前怎么不知道?!查看此链接:@GeoffJames你是我的英雄
List<RootObject> myData = JsonConvert.DeserializeObject<List<RootObject>>(json);