[英]How to perform a Linq “First” query on a strongly-typed DataTable object?
[英]How to copy JObject into strongly-typed object?
为简单起见,我制作了非常简单的结构。
传入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 )。
如何在一个命令中将它们合并为person对象。 也许还有另一种方法将jsonInput直接反序列化为person ?
结果应为:
person.FNAME = 'John'
person.LNAME = 'Doe'
person.CITY = 'Vancuver'
person.COUNTRY = 'CANADA'
我要避免的是遍历属性。 感谢您的任何建议。
使用PopulateObject方法
JsonConvert.PopulateObject(jsonInput,person);
假设您将json作为参数接收...
jsonInput = "{
'PERSON' : {
'FNAME': 'John';
'LNAME': 'Doe',
'CITY': 'Vancuver'
}
}";
Public class Person{
public Person(string json,string city,string country){
JObject jObject = JObject.Parse(json);
JToken jPerson = jObject["PERSON"];
FNAME= (string) jPerson ["FNAME"];
LNAME= (string) jPerson ["LNAME"];
COUNTRY = country:
CITY= ((string) jPerson ["CITY"] == string.Empty)?city:(string) jPerson ["CITY"]; //IF CITY PROPERTY EMPTY USE CITY ELSE USE JSON PROPERTY
}
public string FNAME{ get; set; }
public string LNAME{ get; set; }
public string CITY{ get; set; }
public string COUNTRY{ get; set; }
}
尚未测试,但希望能有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.