0

我必须在 ac# 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,它会在数组中添加 [...] 但我不想要一个数组,我必须显示一个每种类型的标题,然后不是数组形式的详细信息。

第二个问题是在 part_types 下,我无法弄清楚如何在详细信息之前显示零件类型的名称。如果我尝试添加另一个类,我在该类中设置的名称始终显示并且我无法更改它。

任何帮助将不胜感激。

4

3 回答 3

2

如果您使用的是 Visual Studio 2012 和 Web 工具 2012.2 或更高版本,则有一个名为的功能Paste JSON As Classes,您可以将有效的 JSON 粘贴到代码编辑器中,然后选择编辑 -> 选择性粘贴 -> 将 JSON 粘贴为类以生成 C# 或 VB。 NET 类将生成您粘贴的 JSON 结构。

阅读ASP.NET 和 Web 工具 2012.2 中的将 JSON 粘贴为类,了解更多信息和说明。

于 2013-07-24T05:33:23.200 回答
0

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

http://json2csharp.com/

几个关键点

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

编辑的 Anwser

如果你不确定哪个 json 来找你,你可以使用 C# 的动态类型。

从 Nuget 安装 JSONConvertor。(右键单击项目的引用)。

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

dynamic output = JSONConvertor.Deserialize(inputString);

编译器会绕过动态类型的变量,因此您可以编写

output.ANYNAMEYOULIKE 

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

于 2013-07-24T05:37:42.953 回答
0

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

按照这个问题查看答案

利用:

public Dictionary<string, type> part_types { get; set; }
于 2013-07-26T09:50:53.643 回答