Lista de objectos JSON
Bom dia.
Sou novo no JSON e estou a tentar re-implementar uma página usando o JSON em vez de algumas matrizes bidimensionais.
O que espero conseguir é uma série de objectos. Os objetos seriam assim:
{ // Restaurant
"location" : "123 Road Dr",
"city_state" : "MyCity ST",
"phone" : "555-555-5555",
"distance" : "0"
}
Quero criar um conjunto destes objectos do restaurante e povoar o campo de distância com alguma lógica, e depois ordenar o conjunto com base no campo de distância.
Sou muito novo no JSON. Posso criar um conjunto de objectos JSON ou é há mais alguma coisa com o JSON que cumpra este objectivo?
Muito obrigado pela sua ajuda.
Kevin
3
4 answers
Em primeiro lugar, isto não é JSON de todo, você está apenas usando objetos Javascript. JSON é um formato de texto para representar objetos, não existe tal coisa como um "objeto JSON".
Você pode criar um construtor para os seus objectos assim:
function Restaurant(location, city_state, phone, distance) {
this.location = location;
this.city_state = city_state;
this.phone = phone;
// here you can add some logic for the distance field, if you like:
this.distance = distance;
}
// create an array restaurants
var restaurants = [];
// add objects to the array
restaurants.push(new Restaurant("123 Road Dr", "MyCity ST", "555-555-5555", 0));
restaurants.push(new Restaurant("123 Road Dr", "MyCity ST", "555-555-5555", 0));
restaurants.push(new Restaurant("123 Road Dr", "MyCity ST", "555-555-5555", 0));
5
Author: Guffa, 2018-01-17 02:29:42
// You can declare restaurants as an array of restaurant objects
restaurants =
[
{
"location" : "123 Road Dr",
"city_state" : "MyCity ST",
"phone" : "555-555-5555",
"distance" : "1"
},
{
"location" : "456 Avenue Crt",
"city_state" : "MyTown AL",
"phone" : "555-867-5309",
"distance" : "0"
}
];
// Then operate on them with a for loop as such
for (var i = 0; i< restaurants.length; i++) {
restaurants[i].distance = restaurants[i].distance; // Or some other logic.
}
// Finally you can sort them using an anonymous function like this
restaurants.sort(function(a,b) { return a.distance - b.distance; });
4
Author: nwellcome, 2011-07-22 14:34:04
[
{ "location" : "123 Road Dr", "city_state" : "MyCity ST", "phone" : "555-555-5555", "distance" : "0" },
{ "location" : "123 Road Dr", "city_state" : "MyCity ST", "phone" : "555-555-5555", "distance" : "0" },
{ "location" : "123 Road Dr", "city_state" : "MyCity ST", "phone" : "555-555-5555", "distance" : "0" }
]
2
Author: Joyce Babu, 2011-07-22 14:28:52
Claro que podes. Seria parecido com isto.
{ "restaurants": [
{ "location" : "123 Road Dr", "city_state" : "MyCity ST", "phone" : "555-555-5555", "distance" : "0" } ,
{ "location" : "456 Fake St", "city_state" : "MyCity ST", "phone" : "555-123-1212", "distance" : "0" }
] }
O nome do campo exterior de "restaurantes" não é necessário, claro, mas pode ajudar se estiver a incluir outras informações nos dados que está a transferir.
2
Author: Mike, 2011-07-22 14:32:37