如何将json字符串转换为javascript数组?
已搜索,但未得到正确的解决方案 我有一个来自服务器的json字符串。我想将字符串转换为javascript数组,以便根据hotel_name、'minPrice'、'hotel_star'对数据进行排序 下面是JSON字符串如何将json字符串转换为javascript数组?,javascript,arrays,json,Javascript,Arrays,Json,已搜索,但未得到正确的解决方案 我有一个来自服务器的json字符串。我想将字符串转换为javascript数组,以便根据hotel_name、'minPrice'、'hotel_star'对数据进行排序 下面是JSON字符串 { "00001065": { "hotel_id": "00001065", "hotel_name": "The Infantry Hotel", "hotel_star": "3", "image": "",
{
"00001065": {
"hotel_id": "00001065",
"hotel_name": "The Infantry Hotel",
"hotel_star": "3",
"image": "",
"location": "Infantry Road",
"minPrice": "2,497",
"RoomTypes": [
{
"RoomTypeName": "Deluxe King / Twin Double",
"AvailableQuantity": "4",
"RatePlanInclusions": "Complimentary Wi-Fi Internet",
"price": "2,497"
},
{
"RoomTypeName": "Superior Double",
"AvailableQuantity": "2",
"RatePlanInclusions": "Breakfast",
"price": "3,496"
}
]
},
"00001080": {
"hotel_id": "00001080",
"hotel_name": "Hotel Ramanashree",
"hotel_star": "3",
"image": "",
"location": "Richmond Road",
"minPrice": "3,879",
"RoomTypes": [
{
"RoomTypeName": "Executive Room",
"AvailableQuantity": "25",
"RatePlanInclusions": "Breakfast",
"price": "3,879"
},
{
"RoomTypeName": "Club Room",
"AvailableQuantity": "25",
"RatePlanInclusions": "Breakfast",
"price": "4,604"
}
]
},
"00003757": {
"hotel_id": "00003757",
"hotel_name": "The Paul ",
"hotel_star": "5",
"image": "",
"location": "Domlur Layout",
"minPrice": "6,216",
"RoomTypes": [
{
"RoomTypeName": "Executive Suite - Two Bedrooms Suite",
"AvailableQuantity": "4",
"RatePlanInclusions": "Complimentary Wi-Fi Internet, Breakfast",
"price": "8,942"
},
{
"RoomTypeName": "Premier Suite - Two Bedrooms Suite",
"AvailableQuantity": "2",
"RatePlanInclusions": "Complimentary Wi-Fi Internet, Breakfast",
"price": "10,718"
},
{
"RoomTypeName": "Studio Suite - One Bedroom Suite",
"AvailableQuantity": "4",
"RatePlanInclusions": "Complimentary Wi-Fi Internet, Breakfast",
"price": "6,216"
}
]
}
}
var myObject=JSON.parsejsonString 无需将json对象转换为数组进行排序。 您可以对JSON本身进行排序
function sortResults(prop, asc) {
arr = arr.sort(function(a, b) {
if (asc) return (a[prop] > b[prop]);
else return (b[prop] > a[prop]);
});
}
我已经用您的Json创建了一个工作示例。单击标题查看本例中的排序:这是非常标准的JavaScript。也许你应该先试试JSON教程?这是一个很好的开始 您可以解析JSON并将其转换为数组
// Converts an object into an array
function objectToArray(obj) {
var array = [];
for (prop in obj) {
if (obj.hasOwnProperty(prop)) {
array.push(obj[prop]);
}
}
return array;
}
var obj = JSON.parse(json_string);
var arr = objectToArray(obj);
现在,您可以使用自己的compareFunction对数组进行排序。您可以这样做:
var o = JSON.parse("...");
var asArray = Object.keys(o).map(function(k) { return o[k] });
asArray.sort(function(a, b) {
if(a.hotel_name > b.hotel_name) return 1;
if(a.hotel_name < b.hotel_name) return -1;
return 0;
});
这个问题是迄今为止最受欢迎的重复问题。请使用右上角搜索与您的问题标题完全相同的答案可能重复@MarsOne您提到的问题与我的问题不匹配,因为我的JSON字符串格式不同。我已经查过那个问题了。请检查这两个问题并试着区分它们。@MarsOne如果你认为这是一个重复的问题,我会要求你根据另一个问题的答案给我一个解决方案。我知道巴迪。我也是一个开发者。我解决不了这个问题。这就是为什么我把问题贴在这里。试过了。如果我尝试对数据进行排序,它会说myObject.sort不是一个函数。你猜怎么着,因为它不是arary。它是一个物体。如果您想要一个数组,则应该具有字符串[].var a=JSON.parse'[1,2,3]';排序;我的JSON字符串格式与您在示例中提到的不同。因此,请使用JSON.parse,然后通过javascript转换为字符串。但将字符串转换为对象正是我向您展示的方式。我也试过了。排序不适用于变量“arr”。这是一个很好的示例,但OP询问如何将json对象转换为数组,以便对其进行排序。您的代码显示了如何对数组进行排序。不是如何将json对象转换为@RolwinC中所示的数组,它只需稍加修改就可以工作。谢谢