2017-11-07 5 views
0

私は、さまざまなベンダーの製品をインポートするためのインポートシステムを構築しています。このアプリケーションは、ベンダーが提供しているものに準拠する必要があるため、正規化されたカラムはありません。私はMongoDBのコレクションは、例えば何ダイナミックjsonによる解析

に行くもののマッピングを持っている必要があり、ベンダーAは、SKUコードが、私はどのようにだろう、私のJSONデータを解析していますので、ときに

をitemCode呼び出すことがベンダーBにバインドさています私はスキューがそのフィールドであることを私のアプリに動的に伝えることができますか?

私はので、私はみかんだ私はJson.NETと、このような方法を見ていない私は

doc.LoadXml(content); 
XmlNodeList itemPath = doc.SelectNodes(Config.XmlItemPath); 

foreach (XmlNode item in itemPath) 
{ 
    Console.WriteLine(item[MapToValue("CurrencyCode")]?.InnerText); 
} 

のようなものであるXMLを使用して、ベンダーのためにやっているもののように行うことができるようにしたいのですが私はこのデータをどのように簡単に解析できるのか分からなくなった。

+0

あなたは各ベンダーがそれを呼ぶ何を知っていますか?あるいは、あなたが探しているものが「コード」のあるプロパティであると仮定していますか? – thewindev

+0

私はそれのためのマッピングを作成した後に知っているが、そのマッピングはデータベースにある – Eman

答えて

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

API Reference

+0

興味深い、私はこれを与えるだろう – Eman

0

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だけ見ることにJSONに変換することを決めた、私はせずにそれを行う方法を聞いて開いていますxmlに変換しますが、これは私の仕事で前進してくれます。