通过动态 JSON 进行解析



我正在构建一个导入系统,用于从各个供应商导入产品,并且该应用程序必须符合供应商提供给我们的任何内容,因此没有规范化的列。我有一个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 这样的方式,所以我有点迷茫于如何轻松解析这些数据。

看看 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());
}

接口参考

我决定只将 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 的情况下做到这一点,但这将使我继续我的工作。

相关内容

  • 没有找到相关文章

最新更新