我正在构建一个用于从各个供应商导入产品的导入系统,并且应用程序必须符合供应商提供的任何内容,因此没有标准化列。我有一个mongodb集合有一个映射到什么
例如,供应商A已将sku绑定到代码,但供应商B可将其称为itemCode所以当我解析我的json数据时,我怎么能够动态地告诉我的应用程序sku是那个字段?
我希望能够像我正在为使用xml的供应商做的那样,就像
doc.LoadXml(content);
XmlNodeList itemPath = doc.SelectNodes(Config.XmlItemPath);
foreach (XmlNode item in itemPath)
{
Console.WriteLine(item[MapToValue("CurrencyCode")]?.InnerText);
}
我还没有看到过Json.NET的这种方式,所以我很难理解如何轻松解析这些数据。
答案 0 :(得分:0)
我决定将json转换为xml,因为xml在.NET中具有更多的灵活性
var doc = JsonConvert.DeserializeXmlNode(content, "root");
XmlNodeList itemPath = doc.SelectNodes(Config.XmlItemPath);
if (itemPath == null) throw new Exception("Invalid XML Path.");
{
foreach (XmlNode row in itemPath)
{
Console.WriteLine(row[GetJsonProperty("Brand")]?.InnerText);
}
}
这正是我现在想要的,我很乐意听到如何在不转换为xml的情况下进行操作,但这会让我继续前进。
答案 1 :(得分:0)
查看Json.Net的LINQ-to-JSON API。您可以用它编写非常相似的代码:
JToken root = JToken.Parse(jsonContent);
IEnumerable<JToken> itemTokens = root.SelectTokens(Config.JsonItemPath);
foreach (JToken item in itemTokens)
{
Console.WriteLine(item[MapToValue("CurrencyCode")]?.ToString());
}