使用 JavaScriptSerializer 将 JSON 字符串反序列化为 return 单个动态对象而不是键和值数组

Deserializing JSON string with JavaScriptSerializer to return a single dynamic object instead of an array of keys and values

考虑以下 C# 中的 JSON 字符串:

{
    "BuyerRegion":"BuyerRegion [0][27]",
    "SellerRegion":"SellerRegion [0][29]",
    "HubRegion":"HubRegion [0][31]",
    "PartNo":"TINT_MNUM [0][3]",
    "BuyerCompID":"BuyerCompId [0][28]",
    "SellerCompId":"SellerCompId [0][30]",
    "HubCompId":"HubCompId [0][32]"
}

然后我尝试使用以下方法将字符串反序列化为 C# 中的动态对象:

object obj = new JavaScriptSerializer().Deserialize<object>(s); //where s contains the JSON string

但是,返回的 obj 是 key/value 对的数组:

知道如何将它们反序列化为一个动态对象,我可以使用以下方法访问属性:

obj.BuyerRegion //returns "BuyerRegion [0][27]"

JsonConvert/NewtonSoft 不是一个选择。

您可以使用一些 ModelDto 代替 object 并转换为它,我的意思是:

public class ModelDto {
  public string Key {get;set;}
  public string Value {get;set;}
}

或者你可以使用下面的代码通过key从字典中取值:

string buyerRegion = dict["BuyerRegion"];

或者您可以按照问题评论中的建议使用 ExpandoObject。

尝试了几种方法后,我开始意识到访问属性就像调用一样简单:

obj["BuyerRegion"]