使用 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"]
考虑以下 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"]