繁体   English   中英

如何在C#中将json值转换为字典并使用字符串值寻址它们?

[英]How to convert a json values to a dictionary in c# and address them with a string value?

我正在尝试制作一个json值的字典,以使用字符串对它们进行索引。 我正在使用Newtonsoft反序列化json字符串。 我的json是:

 {
    "financialPositions": [
      {
        "fieldName": "Assets",
        "periodEndToDateValue": 0.0,
        "pastYearEndToDateValue": 0.0,
        "description": "\u062f\u0627\u0631\u0627\u06cc\u06cc\u200c\u200c\u0647\u0627",
        "percentChanges": 0.0,
        "rowClass": "GroupHeader"
      },
      {
        "rowClass": "ComputationalRow",
        "fieldName": "ListedCapital",
        "description": "\u0633\u0631\u0645\u0627\u06cc\u0647",
        "percentChanges": 0.0,
        "currentPeriodEndToDateValue": 1.0,
        "pastSimillarEndToDateValue": 1.0,
        "pastYearEndToDateValue": 1.0
      }
    ]
  }

我使用了这些课程:

public class RootObject
{
    public FinancialPositions[] financialPositions{ get; set; }
}

public class FinancialPositions
{
    public string fieldName { get; set; }
    public double periodEndToDateValue { get; set; }
    public double pastYearEndToDateValue { get; set; }
    public string description { get; set; }
    public float percentChanges { get; set; }
    public string rowClass { get; set; }
}

我用它反序列化json字符串:

RootObject oRootObject = new RootObject();
oRootObject  = JsonConvert.DeserializeObject<RootObject>(jsonstring);

需要进行哪些更改以解决以下问题?

oRootObject.financialPositions["Assets"]

您可以为对象定义索引器 []

public class RootObject
{
    public FinancialPositions[] financialPositions{ get; set; }

    public object this[string name]
    {
          get { return financialPositions.FirstOrDefault(f => f.fieldName  == name); }
          set { }
    }
}

然后打电话

oRootObject["Assets"]它返回您的对象

{
        "fieldName": "Assets",
        "periodEndToDateValue": 0.0,
        "pastYearEndToDateValue": 0.0,
        "description": "\u062f\u0627\u0631\u0627\u06cc\u06cc\u200c\u200c\u0647\u0627",
        "percentChanges": 0.0,
        "rowClass": "GroupHeader"
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM