反序列化json对象xamarin android c#
我对反序列化json对象没有什么问题。 来自http url的我的json: 我不知道如何反序列化来动态创建按钮。我知道如何用文本创建按钮,但我不知道如何用它们拥有的选项来创建按钮。我试图在Windows窗体应用程序中获取这些选项进行测试,但应用程序将崩溃。感谢您的帮助。使用: 您还可以创建配对类并使用泛型:反序列化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
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);