无法将大型Javascript对象转换为C#对象

时间:2016-02-21 20:13:40

标签: c# .net json

我来自一个node.js javascript无处不在的教养。学习.NET并在强烈的类型方面努力奋斗。转换大型JSON对象的最快方法是什么:

var body = new {
                   "stay": {
                       "checkIn": "2016-06-08",
                       "checkOut": "2016-06-10",
                       "shiftDays": "2"
                   },
                   "occupancies": [
                                      {
                                          "rooms": 1,
                                          "adults": 2,
                                          "children": 1,
                                          "paxes": [
                                                       {
                                                           "type": "AD",
                                                           "age": 30
                                                       },
                                                       {
                                                           "type": "AD",
                                                           "age": 30
                                                       },
                                                       {
                                                           "type": "CH",
                                                           "age": 8
                                                       }
                                                   ]
                                       }
                                   ],
                   "geolocation": {
                                      "longitude": 2.646633999999949,
                                      "latitude": 39.57119,
                                      "radius": 20,
                                      "unit": "km"
                                  }
               };

可以在Visual Studio中读取的东西吗?

3 个答案:

答案 0 :(得分:4)

实际上有一些可能性,但我会为你指出3:

  1. 您可以创建与json对象相同的类层次结构,并将json反序列化为此创建类的实例。
  2. 您可以通过复制json并使用 Edit>来使Visual Studio负责创建这些类。选择性粘贴>将JSON粘贴为类
  3. 您可以使用数据类型dynamic,只需反序列化为此数据类型即可。代码如下所示:dynamic json = JsonConvert.DeserializeObject(yourJsonAsText);。如果这样做,您可以以编程方式访问反序列化实例中的所有内容 ...
    • 你不会有智能感知(因为没有课程存在)
    • 可能会访问“不存在”的内容
  4. 但是,您需要为上述3个解决方案安装Netwonsoft.Json包。如果您需要没有第三方组件/包的方式,您可以查看以下答案:

    它们展示了.NET框架本身提供的一些方法。

答案 1 :(得分:0)

如果您尚未使用

,请安装https://www.nuget.org/packages/Newtonsoft.Json/
JsonConvert.DeserializeObject<YourType>(string)

其他选项,如果你使用asp.net,你可以做的是创建WebApi或MVc动作,输入参数将是你发送的类型,.net将为你反序列化

public void ActionName(YourType type){
}

答案 2 :(得分:0)

您可以尝试使用Jayrock或Json.NET

为您转换数据的库

https://atifaziz.github.io/projects/jayrock/http://www.newtonsoft.com/json

这些会将您的对象转换为没有特定类型的对象。