JToken
zhuanlan.zhihu.com/p/388545891
匿名对象的序列化
//序列化
Payload = JsonConvert.SerializeObject(
new
{
JobNo = jobNo
}
);
//反序列化
dynamic routePayload = JsonConvert.DeserializeObject(route.Payload);
//坑:routePayload.JobNo并不是string,是JToken类型!反序列化时需谨慎
var jobNo = routePayload.JobNo.Value;
序列化配置
var serializerSettings = new JsonSerializerSettings
{
//设置为驼峰命名,首字母小写
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var payload = JsonConvert.SerializeObject(heatEventPayload, Formatting.None, serializerSettings);
动态创建对象属性
dynamic obj2 = new System.Dynamic.ExpandoObject();
obj2.Name = "金朝钱";
obj2.Age = 31;
obj2.Birthday = DateTime.Now;
给json串增加属性
//方法一:使用dynamic、ExpandoObject
dynamic originalPayload = JsonConvert.DeserializeObject<ExpandoObject>(heatEvent.Payload);
//空值赋值运算符
originalPayload ??= new ExpandoObject();
originalPayload.stirring = eventData.Items;
//方法二:使用jsonObject
var jsonObject = JsonNode.Parse(heatEvent.Payload)?.AsObject();
jsonObject["stirring"] = JsonNode.Parse(JsonConvert.SerializeObject(eventData.Items));
heatEvent.Payload = jsonObject.ToJsonString();