如何在不知道字段名称的情况下反序列化json字符串?

时间:2015-12-10 09:24:04

标签: javascript c# json asp.net-core-mvc

我有一个可以的字符串:

[  
   {  
      Id:{  
         editable:false,
         nullable:true
      }
   },
   {  
      Product:{  
         validation:{  
            required:true
         }
      }
   },
   {  
      Cost:{  
         type:"number",
         validation:{  
            required:true
         }
      }
   }
]

它也可以是这样的:

[  
   {  
      Id:{  
         editable:false,
         nullable:true
      }
   },
   {  
      Car:{  
         validation:{  
            required:true
         }
      }
   },
   {  
      Make:{  
         validation:{  
            required:true
         }
      }
   }
]

关键是字符串将始终具有带有一些可预测值的Id字段,但其他字段可以命名为任何字段。

我有一些javascript,我需要看起来像这样:

schema: {
   model: {
      id: "Id",
      fields: {
          Id: { editable: false, nullable: true },
          Product: { validation: { required: true } },
          Cost: { type: "number", validation: { required: true }}
      }
   }
}

...字段内容需要关联字符串。

目前我有一个ajax调用,可以获取我的代码需要的其他数据,我也想给它我需要的字段结果。我想像这样替换json:

schema: {
   model: {
      id: "Id",
      fields: ajaxResult.fields
      }
   }
}

正常的路由是创建一个可以反序列化json字符串的类(或多个类),但在这种情况下,json字符串中的字段可以完全是任意的。 所以我无法为此创建课程,因为我不知道这些属性将被称为

如何反序列化这个字符串,这样当我从我的Action中返回它时,它会像我描述的那样工作?

目前我的控制器操作看起来像这样:

public IActionResult GetJsonData(Guid id)
{
   var model = new GridDataModel
   {
       schema = SchemaToJson(id),
       //fields = FieldsToJson(id),
       gridData = RowsToJson(id)
   };
   return Json(model);
}

1 个答案:

答案 0 :(得分:4)

在Visual Studio 2015中,您可以使用"粘贴特殊"函数,Visual Studio将为您生成所有类(包括嵌套类等),不需要您自己编码的单行:

enter image description here

请参阅下面的动画:(原始GIF来自here。)

enter image description here

enter image description here