winforms 有人能帮我在C#中使用这个Json文件吗?[关闭]

smdnsysy  于 2023-02-09  发布在  C#
关注(0)|答案(2)|浏览(155)

1小时前关闭。
Improve this question
在过去的6个小时里,我一直试图在文本框中显示一个json文件的内容,但一无所获。

private thruster Getthruster()
        {
            string text = File.ReadAllText(@"./thrusters.json");
            List<thruster> test = JsonConvert.DeserializeObject<List<thruster>>(text);
        
            textBox1.Text = text;
        
            foreach (var item in test)
            {
                textBox1.Text = item.type;
            }
            return Getthruster();
        }

        public class thruster
        {
            public string id { get; set; }
            public string type { get; set; }
            public string placement { get; set; }
        }
{
  "thruster": [
    {
      "id": 1,
      "type": "tunnel",
      "placement": "bow"
    },
    {
      "id": 2,
      "type": "tunnel",
      "placement": "bow"
    },
    {
      "id": 3,
      "type": "azimuth",
      "placement": "bow"
    },
    {
      "id": 5,
      "type": "azimuth",
      "placement": "stern"
    },
    {
      "id": 5,
      "type": "tunnel",
      "placement": "stern"
    },
    {
      "id": 6,
      "type": "azimuth_propulsion"
    },
    {
      "id": 7,
      "type": "azimuth_propulsion"
    }
  ]
}
syqv5f0l

syqv5f0l1#

首先,您将遇到一个StackOverflowException,因为您在同一个方法中调用同一个方法(Getthruster()),而没有任何退出条件。
在此之后,您的json文件似乎是不正确的。您有一个Dictionary<string,thruster[]>,而不是thruster[](或列表)。
thruster[]List<thruster>的json应该如下所示:

[
  {
    "id": "1",
    "type": "t",
    "placement": "top"
  },
  {
    "id": "2",
    "type": "t",
    "placement": "top"
  }
]
kupeojn6

kupeojn62#

你在一个json字符串中有一个对象,但是你试图将它序列化为一个数组。你可以使用下面的代码在你的json中反序列化数组

List<thruster> test = JObject.Parse(text)["thruster"].ToObject<List<thruster>>();

相关问题