如何从带有数组属性的Action方法中返回Json?我正在尝试从操作方法中以json形式返回一些数据。我有一个这样的员工对象:publicclassEmployee{publicintEmployeeID{get;设置;}公共字符串名字{get;设置;}公共字符串姓氏{get;set;}//其他无关属性}然后我有一个视图模型如下publicClassEmployeeViewModel{publicEmployeeSupervisor{get;set;}publicListEmployees}我需要返回一个完全像这样的json对象:{id:1,name:John,children:[{id:1,name:Joe,children:[]},{id:1、name:Rob,children:[]}]}现在只需要到上面的第二层把supervisor和他们的worker还回去就行了。我如何在我的操作方法中返回它(我已经保持viewModel对象水化,我只需要将它作为json返回)。到目前为止,我的问题是未填充children属性。你会惊讶于它是多么容易。只需设置模型对象,使它们具有正确的属性。使用您尝试实现的JSON字符串,您不需要视图模型,因为您似乎希望顶级对象包含员工的属性。而如果您使用viewmodel对象,则顶级对象将是viewmodel对象,而employee将是该对象的属性。相反,我认为您希望顶级对象是具有属性列表(子对象)的员工。子对象也有一个名为children的属性。可以递归填充。构建对象是您的责任,但我确实提供了一些带有虚拟数据的伪代码来帮助您入门。publicClassEmployee{publicintEmployeeID{get;设置;}公共字符串名字{get;设置;}公共字符串姓氏{get;设置;}公共列表子项{get;设置;}}公共类儿童{公共intChildID{get;设置;}公共字符串名字{get;设置;}公共字符串姓氏{get;设置;}公共列表子项{get;set;{}现在在你的动作方法。你知道你可以返回JsonResult吗?这样做:publicJsonResultGetJSON(){//构建员工对象并将孩子添加到列表中。类似于以下伪代码:ListchildrenList=newList{newChild{ChildID=//someid,FirstName="Joe",LastName="Smith"//添加孩子到列表。},//添加更多子项到列表中。}Employeeemp=newEmployee{EmployeeID=123,FirstName="John",LastName="Doe",Children=childrenList};返回Json(emp);}这个JSON看起来像:{"EmployeeID":"123","FirstName":"John","LastName":"Doe","Children":[{"ChildID":"someid","FirstName":"Joe","LastName":"Smith",Children[]},{etc...}]}如果您是JSON的新手,您应该注意变量和名称周围的引号确保没有任何误解了。MVC为您做到了这一点,而且非常好。它会将员工的列表属性转换为JSON数组,而无需您进行任何操作,并且会将JSON格式化为整洁且可读的格式。现在使用MVC3,您也可以模拟绑定到JSON。如果您使用包含的json对象发出请求,MVC3将自动将其属性绑定到employee对象。因此,如果您发布了我上面列出的相同JSON字符串,您的操作方法可能如下所示:publicActionResultSampleMethod(Employeeemp){//emp将是您之前作为JSON发送的相同对象,现在正在发回:D}注意:您可能会考虑将Employee更改为Person并为其提供一个名为Children的List类型的属性。这样您就可以将Employee和Child类合并为一个。但自然我看不到你所有的代码,所以也许你有足够的独特属性值得这两个类。以上是C#学习教程:HowtoreturnJsonfromtheActionMethodwithArrayproperty?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
