gpt4 book ai didi

c# - 如何在 C# 中过滤 JSON 数组

转载 作者:太空狗 更新时间:2023-10-29 22:58:57 24 4
gpt4 key购买 nike

我花了很多时间为我的问题寻找解决方案。

在这个例子中,我在 SetNavRecords 数组中有 2 条记录。第一个是 "Artikelnummer": "21700" 第二个是 "Artikelnummer": "21701"

每条记录都有一个数组“OfflineVerkaufspreis”。

对我来说重要的是“OfflineVerkaufspreis”中的字段“Location_Code”我只需要一个过滤后的位置代码的球洞信息。

如何为一个位置代码选择数据,例如“MH”?

我正在使用 C# 和 Newtonsoft 类进行 JSON 解析。

我用 LINQ 尝试了一些版本,但没有成功。

{ "SetNavRecords" : [ { "Artikelbeschreibung" : "Trikot \"Home\" 2012/2013",
"Artikelbeschreibung2" : "weiß",
"Artikelnummer" : "21700",
"Artikelrabattgruppe" : "MERCH",
"Gutschein" : false,
"MwStProduktgruppe" : "VOLLNEU",
"OfflineVerkaufspreis" : [ { "Allow_Line_Discount" : true,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21700",
"Location_Code" : "BP",
"Unit_Price" : 5.0
},
{ "Allow_Line_Discount" : true,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21700",
"Location_Code" : "MH",
"Unit_Price" : 5.0
},
{ "Allow_Line_Discount" : true,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21700",
"Location_Code" : "RY",
"Unit_Price" : 5.0
}
]
},
{ "Artikelbeschreibung" : "Autogrammtrikot 2012/2013",
"Artikelbeschreibung2" : "weiß",
"Artikelnummer" : "21701",
"Artikelrabattgruppe" : "MERCH",
"Gutschein" : false,
"MwStProduktgruppe" : "VOLLNEU",
"OfflineVerkaufspreis" : [ { "Allow_Line_Discount" : false,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21701",
"Location_Code" : "BP",
"Unit_Price" : 69.99
},
{ "Allow_Line_Discount" : false,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21701",
"Location_Code" : "MH",
"Unit_Price" : 69.99
},
{ "Allow_Line_Discount" : false,
"Date" : "2014-05-16T00:00:00",
"Item_No" : "21701",
"Location_Code" : "RY",
"Unit_Price" : 69.99
}
]
}

] }

这是我的问题:

var tmpResult = JObject.Parse(File.ReadAllText(FileName));
var resultObject = tmpResult["SetNavRecords"]
.Values("OfflineVerkaufspreis")
.Values<JObject>()
.Where(n => n["Location_Code"].Value<string>() == "MH");

过滤器工作正常,但 tmpResult 中的数据不完整。我只在“OfflineVerkaufspreis”中获取数据。我也需要根数据。

有人有想法吗?

谢谢!

最佳答案

这感觉像是一项可以通过将 json 序列化为对象而变得更容易的工作。要将 json 反序列化为一个对象,您可以使用:

RootObject obj = JsonConvert.DeserializeObject<RootObject>(jsonString);

同样,您可以使用以下方法将您的对象转回 json:

string jsonString = JsonConvert.SerializeObject(RootObject);

基于您在问题中提供的 json 的对象结构是这样的:

public class OfflineVerkaufsprei
{
public bool Allow_Line_Discount { get; set; }
public string Date { get; set; }
public string Item_No { get; set; }
public string Location_Code { get; set; }
public double Unit_Price { get; set; }
}

public class SetNavRecord
{
public string Artikelbeschreibung { get; set; }
public string Artikelbeschreibung2 { get; set; }
public string Artikelnummer { get; set; }
public string Artikelrabattgruppe { get; set; }
public bool Gutschein { get; set; }
public string MwStProduktgruppe { get; set; }
public List<OfflineVerkaufsprei> OfflineVerkaufspreis { get; set; }
}

public class RootObject
{
public List<SetNavRecord> SetNavRecords { get; set; }
}

然后您可以通过以下语句轻松地遍历您的对象:

for each(SetNavRecord i in obj.SetNavRecords)
{
// do something to the record
}

关于c# - 如何在 C# 中过滤 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23698415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com