我必须在c#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"
}
}
]
}
我有2个问题,一个是当我运行API时我只能显示一种类型,如果我尝试创建一个List,它会在数组中添加[...]但我不想要一个数组我有显示每种类型的tittle,然后显示不是数组形式的详细信息。
第二个问题是在part_types下我无法弄清楚如何在细节之前显示零件类型的名称。如果我尝试添加另一个类,我总是会显示我在类中设置的名称,我无法更改它。
非常感谢任何帮助。
答案 0 :(得分:2)
如果您使用的是Visual Studio 2012和Web Tools 2012.2或更高版本,则会有一个名为Paste JSON As Classes
的功能,您可以将有效的JSON粘贴到代码编辑器中,然后选择编辑 - >选择性粘贴 - >将JSON粘贴为类以生成将生成粘贴的JSON结构的C#或VB.NET类。
阅读Paste JSON As Classes’ in ASP.NET and Web Tools 2012.2以获取更多信息和说明。
答案 1 :(得分:0)
您可以使用以下网站自动生成C#类
几个关键点
编辑Anwser
如果你不确定哪个json会来找你,你可以使用动态类型的C#。
从Nuget安装JSONConvertor。 (右键单击项目的引用)。
然后你可以传递json字符串如下。
dynamic output = JSONConvertor.Deserialize(inputString);
动态类型的变量被编译器绕过,因此您可以编写
output.ANYNAMEYOULIKE
它将在运行时解决。多数民众赞成如何使用if else条件检查不同的JSON
答案 2 :(得分:0)
感谢您的所有答案,但我从另一个可以回答这个问题的问题中得到了另一个答案。
关注this questions to see answer
使用:
public Dictionary<string, type> part_types { get; set; }