JSON响应问题c#

时间:2013-07-24 05:26:58

标签: c# json structure

我必须在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下我无法弄清楚如何在细节之前显示零件类型的名称。如果我尝试添加另一个类,我总是会显示我在类中设置的名称,我无法更改它。

非常感谢任何帮助。

3 个答案:

答案 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#类

http://json2csharp.com/

几个关键点

  1. 类的名称无关紧要,但标识符的名称很重要。
  2. 提供有效的密钥名称,您现在在JSON密钥中有空格
  3. 编辑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; }