这是我的JSON的一部分
"facets": {
"brand": {
"Feit Electric": 175,
"Halco Lighting": 28,
"Satco": 6,
"Mr Longarm": 3,
"J&J Electronics": 2,
"Texas Fluorescents": 2,
"Dabmar Lighting": 1
},
"status": {
"Active": 221
},
"bvc_product_type": {
"Light Bulbs": 214,
"Generic Product": 4,
"Light Fixtures": 3
},
"product_type.lvl0": {
"Lighting": 185,
"Manufacturers": 19,
"Closeout Specials": 9,
"Lawn, Garden & Pool": 5
}
},
我正在使用的检索JSON的一部分代码是这个...
if (res["facets"] != null)
{
instance.Refinables = new List<IRefinable>();
foreach (JProperty item in res["facets"])
{
Refinable refinable = new Refinable();
refinable.Values = new List<IRefinableValue>();
refinable.Name = item.Name;
foreach (JProperty prop in res["facets"].SelectToken(item.Name))
{
IRefinableValue refinableValue = new RefinableValue();
refinableValue.RefinableName = item.Name;
refinableValue.Name = prop.Name.ToString();
refinableValue.Count = Convert.ToInt32(prop.Value.ToString());
refinable.Values.Add(refinableValue);
}
instance.Refinables.Add(refinable);
}
}
除了JSON返回构面的层次结构(.lvl0 .lvl1等)之外,SelectToken(item.Name)效果很好。
我得到的错误是这个。
“对象引用未设置为对象的实例。”
在选择JProperty方面的任何帮助将不胜感激。谢谢。
答案 0 :(得分:2)
您可以忽略传递给SelectToken
方法的名称。
res["facets"].SelectToken($"['{item.Name}']")
参考:https://www.newtonsoft.com/json/help/html/QueryJsonSelectTokenEscaped.htm