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下,我不知道如何在细节之前显示零件类型的名称。如果我试图添加另一个类,我在类中设置的名称总是显示出来,我不能更改它
如有任何帮助,我们将不胜感激。
如果您使用的是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/
的几个关键点
- 类的名称无关紧要,但标识符的名称很重要
- 给出有效的密钥名称,您现在在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; }