【发布时间】:2015-05-07 14:34:44
【问题描述】:
为简单起见,我制作了非常简单的结构。
传入的 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 以拥有完整的 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'
我要避免的是循环遍历属性。 感谢您的任何建议。
【问题讨论】:
-
您是否尝试过使用
JsonConvert.PopulateObject(jsonInput, person)? (顺便说一句,我强烈建议您使用更传统的属性名称。您可以使用属性来表达它们如何映射到 JSON。) -
乔恩,是的,我知道,这不是我对属性名称的决定 :-)