使用数据从该端点

问题描述 投票:0回答:2

我从某个端点和问题的识别码序列化到我的课越来越TDATA。我想波纹管的数据转换为我的课,但不能获得类应该如何构建。退房的数据.....

  {
    "-LYG_AI_oGYjNBrzMlKF": {
    "chatDispayText": "",
    "chatId": "-LYG_AI_oGYjNBrzMlKF",
    "chatName": "",
    "chattype": "single",
    "imageUrl": "https://wallpaper.wiki/wp-content/uploads/2017/04/wallpaper.wiki-Amazing-celebrities-hd-wallpaper-PIC-WPD004734.jpg",
    "lastMessageSent": "aiye",
    "lastMessageSentTime": 1549704416263,
    "synched": false,
    "users": {
    "-LYG_AIZ5MvTbjR7DACe": "Uicpm3L15TX0c15pKCI6KUEARyB3",
    "-LYG_AI_oGYjNBrzMlKE": "Xsr0z9lsqNOEytX61lJvaGz1A8F2"
    }
    }
}
c# asp.net json api jsonserializer
2个回答
1
投票

如果你走出端点数据具有动态结构,您可以利用一键淡水河谷对集合或字典。例如:

JObject jObject = JObject.Parse(Data); // This would already give you a key-value pair collection
Dictionary<String,Object> collection = new Dictionary<String, Object>();
foreach(var obj in jObject){
    collection.Add(obj.Key, obj.Value);
}

然而,这不是一个强类型的方法,这意味着它不是有效的在大多数情况下。一个更好的解决方案时涉及的端点是定义具有固定模式的类,其实你在你的代码需要的东西,然后将类映射到通过使用元数据结构中的端点产生的对象。例如:

public class ChatInfoModel
{
    [JsonProperty(Metadata.ChatId)]
    public long ChatId { get; set; }
    [JsonProperty(Metadata.ChatId, Required = Required.AllowNull)]
    public String Message { get; set; }
}
public struct Metadata
{
    public const String ChatId = "userChatId"; 
    public const String Message = "messageTxt";
}

接着

var deserializedObject = JsonConvert.DeserializeObject<ChatInfoModel>(data);

然而,如果你的类具有完全相同的命名规则(但不应该一定遵循驼峰命名规则),用于其属性,在串行数据后,将不需要的JsonProperty属性。

您也可以反序列化对象,而无需使用JsonProperty手动属性使用第一种方式,它实际上是在某些情况下有利的,其中你的方案来自一个配置文件,而不是一个结构。


0
投票

从下面的结构以启示:

public class Rootobject
{
    public LYG_AI_Ogyjnbrzmlkf LYG_AI_oGYjNBrzMlKF { get; set; }
}

public class LYG_AI_Ogyjnbrzmlkf
{
    public string chatDispayText { get; set; }
    public string chatId { get; set; }
    public string chatName { get; set; }
    public string chattype { get; set; }
    public string imageUrl { get; set; }
    public string lastMessageSent { get; set; }
    public long lastMessageSentTime { get; set; }
    public bool synched { get; set; }
    public Users users { get; set; }
}

public class Users
{
    public string LYG_AIZ5MvTbjR7DACe { get; set; }
    public string LYG_AI_oGYjNBrzMlKE { get; set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.