如何将JObject复制到强类型对象?

时间:2015-05-07 14:34:44

标签: c# dynamic json.net

为简单起见,我制作了非常简单的结构。

传入JSON:

jsonInput = "{ 'FNAME': 'John'; 'LNAME': 'Doe', 'CITY': 'Vancuver'}";

我需要与Person类的强类型对象集成:

class Person
{
    public string FNAME { get; set; }
    public string LNAME { get; set; }
    public string CITY { get; set; }
    public string COUNTRY { get; set; }
}

首先创建Person对象 (在现实生活中来自DB,但在这里我只是硬编码):

var person = new Person { CITY = 'Toronto', COUNTRY = 'Canada'};

如何将 jsonInput 集成(合并)到以拥有完整的Person对象。 JSON数据应该仅为匹配的属性覆盖Person对象

因此,我首先将JSON jsonInput 反序列化为动态对象

var obj = JsonConvert.DeserializeObject(jsonInput);

所以,现在我已经部分填充了 obj 对象(类型为 JObject )和部分填充的 person 对象(类型为)。

如何在一个命令中将它们合并到 person 对象中。 或者可能有另一种方法将 jsonInput 直接反序列化为 person ??

结果应为:

person.FNAME = 'John'
person.LNAME = 'Doe'
person.CITY = 'Vancuver'
person.COUNTRY = 'CANADA'

我想要避免的是循环属性。 谢谢你的任何建议。

2 个答案:

答案 0 :(得分:3)

使用PopulateObject方法

JsonConvert.PopulateObject(jsonInput,person);

答案 1 :(得分:0)

假设您将json作为参数...

cron

未经测试但希望有所帮助