首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用此终结点的数据

使用此终结点的数据
EN

Stack Overflow用户
提问于 2019-02-10 16:21:29
回答 2查看 43关注 0票数 0

我从某个端点获取tdata,并将问题id序列化到我的类中。我想将下面的数据转换到我的类中,但是不知道这个类应该是如何构造的。查看数据.

代码语言:javascript
复制
  {
    "-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"
    }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2019-02-10 18:10:21

如果从端点获取的数据具有动态结构,则可以使用键-值对集合或字典。例如:

代码语言:javascript
复制
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);
}

然而,这不是一种强类型的方法,这意味着它在大多数情况下都是无效的。在处理端点时,更好的解决方案是定义一个具有固定架构的类,这实际上是您在代码中需要的东西,然后使用元数据结构将该类映射到端点生成的对象。例如:

代码语言:javascript
复制
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";
}

然后

代码语言:javascript
复制
var deserializedObject = JsonConvert.DeserializeObject<ChatInfoModel>(data);

但是,如果您的类对其属性具有与序列化数据中完全相同的命名约定(但不一定遵循camelCase命名约定),则不需要JsonProperty属性。

您还可以使用第一种方法在不使用JsonProperty属性的情况下手动反序列化对象,并且在模式来自配置文件而不是结构的某些场景中,这种方法实际上很有优势。

票数 1
EN

Stack Overflow用户

发布于 2019-02-11 00:23:12

从下面的结构中获得灵感:

代码语言:javascript
复制
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; }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54614629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档