2009-05-10 5 views
1

J'ai une liste d'objets lat/long sur mon serveur.Puis-je retourner un tableau de "nombre, nombre" au format json?

par ex.

public class LatitudeLongitude 
{ 
    public float Latitude; 
    public float Longitude; 
} 

simple.

maintenant, puis-je retourner une collection de ceux-ci, au format json .. MAIS ... je ne veux pas lister la clé, juste les valeurs.

Cela signifie que le résultat normal serait quelque chose comme ...

{ { lat: 111, long : 222 }, { lat: 333, long : 444 } } .. 

mais j'espère pour ...

{ {111, 222}, {333, 444} ..... } 
{ {obj1.Lat, obj1.Long}, {obj2.Lat, obj2.Long} ... etc. ... } 

Est-ce possible? Je veux dire, je peux faire cette chaîne sur le côté serveur facilement. Mais est-ce un format de sortie JSON correct?

Quelqu'un peut-il confirmer s'il vous plaît, etc.

cheers :)

PS. Je ne connais presque aucun Json, alors n'hésitez pas à corriger mes pauvres exemples ci-dessus.

Répondre

2

Si vous avez besoin d'y accéder en utilisant les clés de JSON, vous devrez le spécifier (ou utiliser un JS pour convertir des tableaux en objets du côté client). Sinon, les tableaux devraient fonctionner:

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

Réponse obtenue en raison du code de conversion inclus. –

8

utiliser des tableaux JSON:

[ [111, 222], [333, 444], ... ] 
+0

devrait être entre crochets à l'extérieur au lieu de accolades devraient pas? – Tom

+0

Oui, un problème de copier/coller. Je l'ai corrigé juste après l'affichage. –

-1

Le ASP.NET MVC JSON sérialiseur doit convertir un IList<LatitudeLongitude> à quelque chose comme ceci:

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

Je crois que sous le sérialiseur ASP.NET MVC est JSON juste un sérialiseur JavaScript .NET core filaire.

Je ne pense pas que cela soit possible à partir de .NET en utilisant un sérialiseur. Prob besoin de rendre la chaîne manuellement.

3

La proposition d'Ayman n'est pas tout à fait correcte. Comme un objet {..} est toujours composé de champs ayant un nom. Nous aurions donc à nouveau un objet avec 2 champs de type 'array' qui n'ont pas de nom -> json pas valide pour un objet.

Il existe une très bonne description de la façon dont une chaîne json peut ressembler à www.json.org. En regardant cette description, vous verrez qu'un objet n'est pas autorisé sans un nom String pour un champ donc ce {111,222} n'est pas un objet valide dans json, mais c'est un tableau valide [111,222]. Ce n'est pas un objet valide {[111,222]} mais c'est {array1: [111,222]}.

Je suppose que ce que vous voulez réellement est probablement un tableau de tableaux comme celui-ci qui n'est pas encapsulé comme un objet.

[[111,222], [333,444]]. Cette approche vous donne le choix d'ajouter autant de tableaux de lat/long que vous le souhaitez au tableau englobant et en même temps vous pouvez traiter les tableaux internes quelle que soit la taille du tableau externe avec une boucle javascript .

Espérons que cela a aidé.

acclamations Michael

+0

C'était un problème de copier/coller que j'ai corrigé juste après avoir posté. Désolé pour la confusion. –

+0

ouais vu à la fin, vous l'avez corrigé. semble bien maintenant. – marksml

0

Mais est-ce une sortie JSON format correct ?

Vous pouvez coller JSON à jslint.com pour valider votre JSON

Questions connexes