我的服务器上有一个lat / long对象列表。
例如
public class LatitudeLongitude
{
public float Latitude;
public float Longitude;
}
简单。
现在,我可以用json格式返回这些的集合。但是......我不想列出键,只是值。
这意味着正常的结果将是......
{ { lat: 111, long : 222 }, { lat: 333, long : 444 } } ..
但我希望......
{ {111, 222}, {333, 444} ..... }
{ {obj1.Lat, obj1.Long}, {obj2.Lat, obj2.Long} ... etc. ... }
这可能吗?我的意思是,我可以轻松地在服务器端制作该字符串。但这是一种正确的JSON输出格式吗?
有人可以确认,等等。
欢呼:)PS。我几乎不认识任何Json,所以请不要犹豫,纠正我上面的可怜例子。
答案 0 :(得分:8)
使用JSON数组:
[ [111, 222], [333, 444], ... ]
答案 1 :(得分:3)
Ayman的提议不太正确JSON语法。对象{..}总是由具有名称的字段组成。所以我们再次拥有2个类型为'array'但没有名称的字段的对象 - >对象不是有效的json。
json字符串在www.json.org的外观非常好。看一下这个描述你会看到一个对象是不允许没有名字字符串的字段,所以这个{111,222}不是json中的有效对象,但这是有效的[111,222]数组。这不是有效的对象{[111,222]},但这是{array1:[111,222]}。
我猜你真正想要的很可能是像这样没有封装为对象的数组。
[[111222],[333444]。
这种方法可以让你选择在封闭数组中添加尽可能多的lat / long数组,同时你可以处理内部数组,无论外部数组的大小与javascript循环有多大。
希望有所帮助。
欢呼声 迈克尔
答案 2 :(得分:2)
如果需要使用JSON中的键访问它,则需要指定它(或使用JS将数组转换为客户端上的对象)。否则,数组应该起作用:
var json = [ [123, 456], [234, 567] ];
var convertedJson = [];
for (i = 0; i < json.length; ++i) {
var thisObj = new Object();
thisObj.latitude = json[i][0];
thisObj.longitude = json[i][1];
convertedJson[i] = thisObj;
}
答案 3 :(得分:0)
但这是一个正确的JSON输出 格式?
您可以在jslint.com上粘贴JSON以验证您的JSON
答案 4 :(得分:-1)
ASP.NET MVC JSON序列化程序应该将IList<LatitudeLongitude>
转换为这样的内容:
[{"Latitude":111,"Longitude":222},{"Latitude":333,"Longitude":444} .. ]
我相信在ASP.NET MVC下,JSON序列化程序只是一个热连接的.NET核心Javascript序列化程序。
我不认为使用序列化程序可以从.NET中获取。 Prob需要手动渲染字符串。