2017-12-16 10 views
-4
{ 
    "irCurves": { 
    "EUR": { 
     "FCC-IRCUBE": [ 
     { 
      "curveDefinitionId": "FCC", 
      "curveFamilyId": "EUR/EURCURVE", 
      "curveName": "EURCURVE", 
      "marketDataSet": "FCC-IRCUBE", 
      "referenced": false 
     } 
     ] 
    }, 
    "GBP": { 
     "FCC-IRCUBE": [ 
     { 
      "curveDefinitionId": "FCC", 
      "curveFamilyId": "value", 
      "curveName": "value", 
      "marketDataSet": "value", 
      "referenced": false 
     } 
     ] 
    }, 
    "USD": { 
     "FCC-IRCUBE": [ 
     { 
      "curveDefinitionId": "FCC", 
      "curveFamilyId": "value", 
      "curveName": "value", 
      "marketDataSet": "value", 
      "referenced": false 
     }, 
     { 
      "curveDefinitionId": "FCC", 
      "curveFamilyId": "value", 
      "curveName": "value", 
      "marketDataSet": "value", 
      "referenced": false 
     } 
     ] 
    } 
    } 
} 

上記のjsonから、私は "USD"、 "EUR"、 "GBP"のみを選択する必要があります。 このjsonを解析してC#の値を上回るにはどうすればよいですか。 また、上記のjsonレスポンスは常に同じではありません。その動的応答、私たちは鍵を追跡できません。C#で複雑なjson文字列を解析する

+2

JSONパーサーの使用を検討しましたか? –

+2

関連のない質問タグは使用しないでください。この質問は、Javaとは関係ありません。 –

+0

これまでに何を試しましたか? –

答えて

0

あなたのJSONファイルのすべてのデータとclassを作成し、StreamReaderをして​​、あなたのJSONファイルを読み込ん

string sJSONfile = StreamReader_Temp.ReadToEnd(); 

JavaScriptSerializer JavaScriptSerializer_Temp = new JavaScriptSerializer(); 
YourClass dict = JavaScriptSerializer_Temp.Deserialize<YourClass>(sJSONfile); 

ヒント:クラスは、私はJSONに変換するためにhttps://jsonutils.com/を使用し、この
のようになります。 C#

public class FCCIRCUBE 
{ 
    public string curveDefinitionId { get; set; } 
    public string curveFamilyId { get; set; } 
    public string curveName { get; set; } 
    public string marketDataSet { get; set; } 
    public bool referenced { get; set; } 
} 

public class EUR 
{ 
    public IList<FCCIRCUBE> FCC-IRCUBE { get; set; } 
} 

public class FCCIRCUBE 
{ 
    public string curveDefinitionId { get; set; } 
    public string curveFamilyId { get; set; } 
    public string curveName { get; set; } 
    public string marketDataSet { get; set; } 
    public bool referenced { get; set; } 
} 

public class GBP 
{ 
    public IList<FCCIRCUBE> FCC-IRCUBE { get; set; } 
} 

public class FCCIRCUBE 
{ 
    public string curveDefinitionId { get; set; } 
    public string curveFamilyId { get; set; } 
    public string curveName { get; set; } 
    public string marketDataSet { get; set; } 
    public bool referenced { get; set; } 
} 

public class USD 
{ 
    public IList<FCCIRCUBE> FCC-IRCUBE { get; set; } 
} 

public class IrCurves 
{ 
    public EUR EUR { get; set; } 
    public GBP GBP { get; set; } 
    public USD USD { get; set; } 
} 

public class Example 
{ 
    public IrCurves irCurves { get; set; } 
} 
0

にあなたはCinchoo ETLで試すことができます - オープン荘をJSONファイルを解析して作成するためのrce lib以下

サンプル

public class IRCUBE 
    { 
     public string CurveDefinitionId { get; set; } 
     public string CurveFamilyId { get; set; } 
     public string CurveName { get; set; } 
     public string MarketDataSet { get; set; } 
     public string Referenced { get; set; } 

     public override string ToString() 
     { 
      StringBuilder msg = new StringBuilder(); 

      msg.AppendLine("CurveDefinitionId: " + CurveDefinitionId); 
      msg.AppendLine("CurveFamilyId: " + CurveFamilyId); 
      msg.AppendLine("CurveName: " + CurveName); 
      msg.AppendLine("MarketDataSet: " + MarketDataSet); 
      msg.AppendLine("Referenced: " + Referenced); 

      return msg.ToString(); 
     } 
    } 

    using (var p = new ChoJSONReader("sample14.json") 
     .WithField("USD", jsonPath: "$..USD.FCC-IRCUBE", fieldType: typeof(IRCUBE[])) 
     .WithField("EUR", jsonPath: "$..EUR.FCC-IRCUBE", fieldType: typeof(IRCUBE[])) 
     .WithField("GBP", jsonPath: "$..GBP.FCC-IRCUBE", fieldType: typeof(IRCUBE[])) 
    ) 
    { 
     foreach (dynamic rec in p) 
     { 
      Console.WriteLine("USD:"); 
      Console.WriteLine(); 
      foreach (var curr in rec.USD) 
      { 
       Console.WriteLine(curr.ToString()); 
      } 
      Console.WriteLine(); 
     } 
    } 

JSONPath

このことができます希望を使用してUSD、EUR、GBPノードを取得する方法を示しています。

免責事項:私はライブラリの著者です。

関連する問題