如何在C#中获得一块Json?

时间:2018-07-12 11:09:16

标签: c# .net json javascriptserializer

我手里有一个json,我想从c#控制台应用程序中获取一个json。

我想使用JavaScriptSerializer反序列化操作,但是如果我用这种方法提供完整的json,则会收到类似无效json的错误。这就是为什么我要为该方法提供json。

我该如何解决?

全杰森:

{

    "ABCFields": {

    },

    "XYZFields": {

    },

    "OPRFields": {
        "MenuEntity": [

            {
                "id": "89899",
                "title": "Main Menu",
                "link": null,
                "test": "test"
            },
            {
                "id": "2323",
                "title": "Main Menu",
                "link": null,
                "test": "test"
            }

        ]
    }

}

我想达到以下目标;

 [
  {
    "id": "89899",
    "title": "Main Menu",
    "link": null,
    "test": "test"
  },
  {
    "id": "2323",
    "title": "Main Menu",
    "link": null,
    "test": "test"
  }
]

2 个答案:

答案 0 :(得分:2)

首先,您需要使用以下类结构来反序列化JSON表示的完整对象:

public class ABCFields
{
}

public class XYZFields
{
}

public class MenuEntity
{
    public string id { get; set; }
    public string title { get; set; }
    public object link { get; set; }
    public string test { get; set; }
}

public class OPRFields
{
    public List<MenuEntity> MenuEntity { get; set; }
}

public class RootObject
{
    public ABCFields ABCFields { get; set; }
    public XYZFields XYZFields { get; set; }
    public OPRFields OPRFields { get; set; }
}

这不能被跳过,但是当您将反序列化嵌套的对象时,反序列化JSON响应中的其他所有内容的性能影响可以忽略不计,并且不会引起关注。

反序列化时,您只需选择嵌套对象,而忽略一个链接中的其他所有内容:

var oprfields = new JsonSerializer...<FullObjectType>().OprFields;

上面的反序列化将取决于您所说的父类。

答案 1 :(得分:-1)

这是异端,它是vb,但是您去了:

x[2](1, 2); // this is equivalent to fn3(1, 2)