我有以下代码,newtonsoft camelcases 顶级属性,但不是作为对象传入的属性。
public class Event
{
public int Id { get; set; }
public string Name { get; set; }
public object Body { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试:
public void Test()
{
var json = @"
{
'Id': 2,
'Name': 'Foo',
'Body': {
'ShipmentId':'6983136',
'PickupDate':'2019-07-26T17:14:11Z',
'OrderNumbers':['9638063']
}
}";
var myEvent = JsonConvert.DeserializeObject<Event>(json);
var camelSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
var endJson = JsonConvert.SerializeObject(myEvent, camelSettings);
Console.WriteLine(endJson);
}
Run Code Online (Sandbox Code Playgroud)
这输出:
{"id":2,"name":"Foo","body":{"ShipmentId":"6983136","PickupDate":"2019-07-26T17:14:11Z","OrderNumbers":[" 9638063"]}}
我如何让它对身体内部的属性进行驼峰命名。
一种解决方案是使用 ExpandoObject。例如,
var myEvent = JsonConvert.DeserializeObject<ExpandoObject>(json); // Deserialize as ExpandoObject
var camelSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
var endJson = JsonConvert.SerializeObject(myEvent, camelSettings);
Run Code Online (Sandbox Code Playgroud)
请注意,上面的代码将 json 反序列化为 ExpandoObject 而不是 Event。这将产生作为 endJson
{"id":2,"name":"Foo","body":{"shipmentId":"6983136","pickupDate":"2019-07-26T17:14:11Z","orderNumbers":["9638063"]}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3017 次 |
| 最近记录: |