我正在尝试对我从数据库中检索到的响应进行排序,以返回一个不错的JSON数组,但是我找不到解决方法,因此我向您寻求帮助。
数据库的响应:
[
"\u00d6rebro":{"Allm\u00e4nrepan"},
"kumla":{"Rum 1","Rum 2","rum 4"},
"Karlstad":{"uno","replokal 231"}
]
我希望它返回以下内容:
getOneToOneChatMessages(userId:string, otherUserId:string){
let ls:Message[]=[];
this.database.list(`/user-messages/${userId}/${otherUserId}`)
.snapshotChanges().take(1).subscribe(chats=>{
chats.forEach(chat => {
this.database.object(`/messages/${chat.key}`).valueChanges().take(1).subscribe(m=>{
ls.push(<Message>m);
});
});
})
return ls;
}
希望您明白这一点,
试图在数组上调用response-> json(),但没有成功,我无法在线查找任何进一步的信息,因为我不确定要搜索什么
答案 0 :(得分:1)
您可以按照以下步骤来实现:
以以下代码为例:
$s = '[{"stad":"\u00d6rebro","lokalnamn":"Allm\u00e4nrepan"},{"stad":"Kumla","lokalnamn":"Rum 1"},{"stad":"Kumla","lokalnamn":"Rum 2"},{"stad":"Kumla","lokalnamn":"Rum 4"},{"stad":"Karlstad","lokalnamn":"UNO"},{"stad":"Karlstad","lokalnamn":"Replokal 231"}]';
$arr = json_decode($s, true);
$res = array();
foreach($arr as $elem) {
$key = $elem["stad"];
$value = $elem["lokalnamn"];
if (array_key_exists($key, $res)) {
$res[$key][] = $value;
} else {
$res[$key] = array($value);
}
}
$a = array_map(function($elem) {
if (is_array($elem) && count($elem) == 1)
return $elem[0];
else return $elem;
},$res);
这将为您提供:
Array
(
[Örebro] => Allmänrepan
[Kumla] => Array
(
[0] => Rum 1
[1] => Rum 2
[2] => Rum 4
)
[Karlstad] => Array
(
[0] => UNO
[1] => Replokal 231
)
)