如何反序列化 Json 并绑定到变量/属性 c#

Posted

技术标签:

【中文标题】如何反序列化 Json 并绑定到变量/属性 c#【英文标题】:How to desearilize Json and bind to variables/properties c# 【发布时间】:2021-06-16 13:31:04 【问题描述】:
var AdditionalData = flexEventTriggerLogsList.Select(x => x.AdditionalData).ToString();
            string json = Convert.ToString(JsonConvert.DeserializeObject(AdditionalData));
            var objTriggerLog = new FlexEventTriggerLog();
            objTriggerLog.lookupEntity_RecordId = ????
            objTriggerLog.DocumentRecordIds = ????

附加数据将以字符串形式返回我的 Json 对象。我必须使用该对象来获取我的实体和文档记录 ID。

将返回的Json对象:


    "lookupEntity_RecordId": "00000000-0000-0000-0000-000000000000",
    "DocumentRecordIds":["00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000"]
    

【问题讨论】:

问题已经有你要的代码 - JsonConvert.DeserializeObject(AdditionalData)...你能澄清一下你到底需要什么帮助吗? 我想将反序列化的对象绑定到我的 c# 类对象属性。即lookupEntity_RecordId 和 DocumentRecordIds 【参考方案1】:

您可以使用JsonConvert.DeserializeObject(jsonstring)

你为你的 json 创建一个模型

public class AdditionalDataModel

    public string lookupEntity_RecordId  get; set; 
    public List<string> DocumentRecordIds  get; set; 

然后反序列化模型中的 json

var AdditionalData = flexEventTriggerLogsList.Select(x => x.AdditionalData).ToString();
var additionalDataModel = JsonConvert.DeserializeObject<AdditionalDataModel>(AdditionalData);
var objTriggerLog = new FlexEventTriggerLog();`
objTriggerLog.lookupEntity_RecordId = additionalDataModel.lookupEntity_RecordId;
objTriggerLog.DocumentRecordIds = additionalDataModel.DocumentRecordIds;

【讨论】:

以上是关于如何反序列化 Json 并绑定到变量/属性 c#的主要内容,如果未能解决你的问题,请参考以下文章

如何反序列化 XML 到 json 和 json 到 c# 类?

反序列化以 @ 开头的 JSON 属性

在将 JSON 反序列化为 C# 对象之前检查属性值

C# JSON 反序列化:如何从 JSON 对象数组中获取值 [重复]

Newtonsoft 反序列化到对象存储底层 JSON 作为属性

使属性反序列化但不使用 json.net 序列化