Могу ли я вернуть массив "число, число" в формате JSON? - PullRequest
1 голос
/ 10 мая 2009

У меня есть список объектов 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?

Может кто-нибудь подтвердить, и т.д.

ура :) 1020 *

PS. Я едва знаю Json, поэтому, пожалуйста, не стесняйтесь исправлять мои плохие примеры выше.

Ответы [ 5 ]

8 голосов
/ 10 мая 2009

Использовать массивы JSON:

[ [111, 222], [333, 444], ... ]
3 голосов
/ 10 мая 2009

Предложение Аймана не совсем правильный синтаксис JSON. Поскольку объект {..} всегда состоит из полей, имеющих имя. Таким образом, у нас снова будет объект с 2 полями типа 'массив', у которых нет имени -> недопустимый json для объекта.

Очень хорошее описание того, как может выглядеть строка json на www.json.org . Глядя на это описание, вы увидите, что объект нельзя использовать без имени String для поля, поэтому этот {111,222} не является допустимым объектом в json, но это допустимый массив [111,222]. Это не допустимый объект {[111,222]}, но это {массив1: [111,222]}.

Полагаю, вам на самом деле нужен массив таких массивов, не инкапсулированный как объект.

[[111222], [333444]].

Этот подход даст вам возможность добавить столько массивов lat / long, сколько вам нужно, во вмещающий массив, и в то же время вы можете обрабатывать внутренние массивы независимо от размера внешнего массива с помощью цикла javascript.

Надеюсь, это помогло.

веселит Michael

2 голосов
/ 10 мая 2009

Если вам нужен доступ к нему с помощью ключей в 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;
}
0 голосов
/ 17 июня 2009

Но это правильный вывод JSON формат

Вы можете вставить JSON на jslint.com для проверки вашего JSON

0 голосов
/ 10 мая 2009

Сериализатор ASP.NET MVC JSON должен преобразовать IList<LatitudeLongitude> во что-то вроде этого:

[{"Latitude":111,"Longitude":222},{"Latitude":333,"Longitude":444} .. ]

Я считаю, что под ASP.NET MVC JSON-сериализатор является просто горячим проводником .NET core Javascript serializer.

Я не думаю, что это возможно из .NET с использованием сериализатора. Вероятно, нужно визуализировать строку вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...