JSON响应问题c#

本文关键字:问题 响应 JSON | 更新日期: 2023-09-27 18:24:31

我必须在c#neneneba API中返回一个JSON字符串,如下所示:

{ "model" : 4 , "lang" : "en_US", "parts" : [ { "id" : 1545, "name" : "Part 1", "part_types" : { "type 1" : { "url" : "part.com/type1", "desc" : "has 6 bits" }, "type 2" : { "url" : "part.com/type2", "desc" : "has 7 bits." } } } ] }

我有一个基本结构,比如:

public class inventory
{
    public int model { get; set; }
    public string lang { get; set; }
    public part[] parts { get; set; }
}
public class part
{
    public int id { get; set; }
    public string name { get; set; }
    public type types { get; set; }
}
public class type
{
    public string url { get; set; }
    public string desc { get; set; }
}

但我一直收到这样的输出:

{ "model" : 4 , "lang" : "en_US", "parts" : [ { "id" : 1545, "name" : "Part 1", "part_types" : { "url" : "part.com/type1", "desc" : "has 6 bits" } } ] }

我有两个问题,一个是当我运行API时,我只能显示一个类型,如果我试图制作一个列表,它会添加[…]作为数组,但我不想要一个数组,我必须显示每个类型的标题,然后不以数组形式显示详细信息。

第二个问题是在part_types下,我不知道如何在细节之前显示零件类型的名称。如果我试图添加另一个类,我在类中设置的名称总是显示出来,我不能更改它

如有任何帮助,我们将不胜感激。

JSON响应问题c#

如果您使用的是Visual Studio 2012和Web Tools 2012.2或更高版本,那么有一个名为Paste JSON As Classes的功能,您可以在其中将有效的JSON粘贴到代码编辑器中,然后选择编辑->特殊粘贴->将JSON粘贴为类来生成C#或VB.NET类,这些类将生成粘贴的JSON结构。

有关更多信息和说明,请阅读ASP.NET和Web Tools 2012.2中的"将JSON粘贴为类"。

您可以使用以下网站自动生成C#类

http://json2csharp.com/

的几个关键点

  1. 类的名称无关紧要,但标识符的名称很重要
  2. 给出有效的密钥名称,您现在在JSON密钥中有空格

编辑的Anwser

如果您不确定哪一个json会出现,您可以使用C#的动态类型。

从Nuget安装JSONConverter。(右键单击项目的参考资料)。

然后您可以按如下方式传递json字符串。

dynamic output = JSONConvertor.Deserialize(inputString);

编译器绕过了动态类型的变量,这样您就可以编写

output.ANYNAMEYOULIKE 

它将在运行时解决。这就是使用if-else条件检查不同JSON的方法

感谢您的回答,但我收到了另一个问题的另一个答案,可以回答这个问题。

按照以下问题查看答案

用途:

public Dictionary<string, type> part_types { get; set; }