{
"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响应总是不一样。它是一个动态响应,我们无法跟踪键。
答案 0 :(得分:0)
您可以尝试使用Cinchoo ETL - 一个用于解析和创建JSON文件的开源库。
下面的示例显示了如何使用JSONPath获取USD,EUR,GBP节点
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();
}
}
希望这有帮助。
免责声明:我是图书馆的作者。
答案 1 :(得分:-1)
使用您的JSON文件的所有数据创建class
,然后使用StreamReader读取您的JSON文件。
string sJSONfile = StreamReader_Temp.ReadToEnd();
JavaScriptSerializer JavaScriptSerializer_Temp = new JavaScriptSerializer();
YourClass dict = JavaScriptSerializer_Temp.Deserialize<YourClass>(sJSONfile);
提示:该课程应如下所示 我使用https://jsonutils.com/将JSON转换为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; }
}