c# - JSON.Net 将内部对象转换为 C# 模型

标签 c# json.net

我有以下从远程 API 返回的 JSON(我无法修改返回的 JSON)

{
    "APITicket": {
        "location": "SOMEVALUE",
        "ticket": "SOMEVALUE"
    }
}

现在使用 JSON.Net 将其转换为模型,我必须创建 2 个模型。

  public class TicketModel
    {
        public string location { get; set; }
        public string ticket { get; set; }
    }

    public class TicketContainer
    {
        public TicketModel APITicket { get; set; } 
    }

然后做一些类似...

var myObject = JsonConvert.DeserializeObject<TicketContainer>(this.JSONResponse);

这很有效 - 当我对 API 进行大约 50 次调用并且真的不想为每个调用创建第二个“容器”时,我的问题就出现了。有没有办法将上面的示例直接绑定(bind)到 TicketModel?

最佳答案

你可以这样做:

var json = @"
            {
                'APITicket': {
                    'location': 'SOMEVALUE',
                    'ticket': 'SOMEVALUE'
                }
            }";

//Parse the JSON:
var jObject = JObject.Parse(json);

//Select the nested property (we expect only one):
var jProperty = (JProperty)jObject.Children().Single();

//Deserialize it's value to a TicketModel instance:
var ticket = jProperty.Value.ToObject<TicketModel>();

关于c# - JSON.Net 将内部对象转换为 C# 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17566368/

相关文章:

c# - CRM 2011 Online - 插件中的无限循环错误 - 无法找到它

c# - 使用 DataSet 时数据库未更新

c# - Entity Framework - 在运行时更改连接字符串(需要解释)

c# - 在 Silverlight 中,如何将 ListBox 项目选择绑定(bind)到 Navigate 事件?

c# - 无法确定类型 "Class"的 JSON 对象类型

c# - 从 WCF 服务返回的 JSON 数据包含转义字符

c# - 序列化时出现 JSON.NET StackOverflowException

c# - 使用 JsonConvert.DeserializeObject (Json.net) 反序列化 - 按动态类型

unity-game-engine - unity Json.net bson 自引用循环

c# - SharePoint SPListItemCollection,将项目添加到空白列表