给出以下对象
Friend Class GetLocationsResult
Public Property X1 As String
Public Property X2 As String
Public Property X3 As String
Public Property X4 As String
Public Property X5 As String
Public Property X6 As Double
Public Property X7 As Double
End Class
它被声明和实例化:
Dim objList as List(of GetLocationsResults) = new List(of GetLocationsResults)
objList通过迭代器填充,该迭代器通过一组对象/聚合类进行搅拌。迭代器只是将值推送到新的GetLocationsResult对象中,然后将其添加到列表中。
鉴于NewtonSoft JSONConvert.SerializeObject(objList)
结果:
{"d":"[{\"X1\":\"Store Name\",\"X2\":\"Address\",\"X3\":\"City\",\"X4\":\"State\",\"X5\":\"Zip\",\"X6\":Coord1,\"X7\":Coord2}]"}
这一点已经解决,不再是问题
此结果集存在多个问题。首先,无论奇怪 原因是,名为
"d"
的对象是不可接受的。
- 如何为json数组的“name”指定
醇>"d"
以外的内容?
当我尝试JSON.parse
响应时,它需要采用以下格式才能真正获取数据:
resultSet = JSON.parse(data.d);
console.warn(resultSet[0].X1);
当然,不得不说resultSet[0]
是不可接受的。
- 如何使'JSONConvert.Serialize'方法不以这样的方式包装响应,我必须引用第一个索引 生成JSON数据,以便我可以说
醇>resultSet.X1
而不是。{resultSet[0].X1
?
根据要求,以下是一些可能与手头问题相关的更详细信息。
正在从WCF服务返回数据。暴露的方法如此装饰:
<WebInvoke(Method:="GET", ResponseFormat:=WebMessageFormat.Json)>
并返回类型String
。该服务由桌面应用程序和移动平台使用。桌面网站可以有自己的方法,事实上,因为我们不想处理X1,X2等,而移动平台开发人员已经声明必要。如上所述,该方法以自定义聚合类的形式返回许多结果,然后将其推入类对象,该类对象只是属性的集合。因此,return语句是:
Return JsonConvert.SerializeObject(retVal)
其中retVal是List(GetLocationsResult)
因此,虽然必须通过索引访问数据对于网站来说可能没问题,但移动平台是不可接受的。因为每个都会运行自己的方法,所以如果需要,可以为两者提供唯一的解决方案。