将 JSON 反序列化为 asp.net 核心中的匿名对象

Deserialize JSON to anonymous object in asp.net core

我有一个 XML 这样的:

<?xml version="1.0" encoding="UTF-8" ?>
<RESPONSE>
    <SINGLE>
        <KEY name="grades">
            <MULTIPLE>
                <SINGLE>
                    <KEY name="courseid">
                        <VALUE>3</VALUE>
                    </KEY>
                    <KEY name="grade">
                        <VALUE>40.00</VALUE>
                    </KEY>
                    <KEY name="rawgrade">
                        <VALUE>40.00000</VALUE>
                    </KEY>
                    <KEY name="rank">
                        <VALUE null="null"/>
                    </KEY>
                </SINGLE>
            </MULTIPLE>
        </KEY>
        <KEY name="warnings">
            <MULTIPLE></MULTIPLE>
        </KEY>
    </SINGLE>
</RESPONSE>

我已将其转换为 JSON 字符串,如下所示

string json = JsonConvert.SerializeXmlNode(doc);

但我需要将我的 JSON 分配给以下 class 类型的对象

public class Grades
{
    public string Courseid { get; set; }
    public string Grade{ get; set; }
    public string Rawgrade{ get; set; }
    public string Rank{ get; set; }
}

这样,我就可以访问或分配我的值到

Grade mygrade;

或以后mygrade.Courseid

现在看起来像这样:

{
  "?xml": {
    "@version": "1.0",
    "@encoding": "UTF-8"
  },
  "RESPONSE": {
    "SINGLE": {
      "KEY": [
        {
          "@name": "grades",
          "MULTIPLE": {
            "SINGLE": {
              "KEY": [
                {
                  "@name": "courseid",
                  "VALUE": "3"
                },
                {
                  "@name": "grade",
                  "VALUE": "40.00"
                },
                {
                  "@name": "rawgrade",
                  "VALUE": "40.00000"
                },
                {
                  "@name": "rank",
                  "VALUE": {
                    "@null": "null"
                  }
                }
              ]
            }
          }
        },
        {
          "@name": "warnings",
          "MULTIPLE": ""
        }
      ]
    }
  }
}

但是我需要像下面这样的JSON

{
  "courseid" : "3",
  "grade": "40.00",
  "rawgrade": "40.00000",
  "rank": "null"
}

如何将我的 json 正确分配给上述 class 格式 Grades?谁能帮帮我吗?我是 ASP.NET Core 的新手。

根据您的输入 xml 和输出 json,您无法直接转换为 JSON。这是使用 LINQ 获取所需对象并使用 JsonConvert

序列化的一种方法
var strFile = File.ReadAllText("XMLFile1.xml");

var grades = xdoc.Descendants("KEY")
                 .Where(x => x.Attribute("name").Value == "grades")
                 .Descendants("SINGLE")
                 .Select(y => new Grades
                  {
                        Courseid = y.Descendants("KEY").Where(z => z.Attribute("name").Value == "courseid").Select(a => a.Element("VALUE").Value).FirstOrDefault(),
                        Grade = y.Descendants("KEY").Where(z => z.Attribute("name").Value == "grade").Select(a => a.Element("VALUE").Value).FirstOrDefault(),
                        Rawgrade = y.Descendants("KEY").Where(z => z.Attribute("name").Value == "rawgrade").Select(a => a.Element("VALUE").Value).FirstOrDefault(),
                        Rank = y.Descendants("KEY").Where(z => z.Attribute("name").Value == "rank").Select(a => a.Element("VALUE").Value).FirstOrDefault(),
                  });
                    
Console.WriteLine(JsonConvert.SerializeObject(grades));