PHP json_将字符串键编码为数组
我为我的游戏编写了一个api来获得成就等等。我通过www请求将数据从Web服务器加载到unity c#中。我需要一个从php数组,其中包含成就和更多的数据。问题是,结果是这样的PHP json_将字符串键编码为数组,php,json,Php,Json,我为我的游戏编写了一个api来获得成就等等。我通过www请求将数据从Web服务器加载到unity c#中。我需要一个从php数组,其中包含成就和更多的数据。问题是,结果是这样的 [ {"ID":"1", "gameID":"1", "name":"achv1", "neededvalue":"50", "player_achievements":{ "ID":"8", "achievementID":"1",
[
{"ID":"1",
"gameID":"1",
"name":"achv1",
"neededvalue":"50",
"player_achievements":{
"ID":"8",
"achievementID":"1",
"playerID":"9",
"value":"",
"completed":""
}
},
{"ID":"2",
"gameID": "1",
"name":"achv2",
"neededvalue":"100",
"player_achievements":{
"ID":"9",
"achievementID":"2",
"playerID":"9",
"value":"","completed":""
}
}
]
玩家成就是头部数组的子数组,我需要玩家成就[]周围的方括号,因为untity c#无法将其转换为对象。我花了几个小时寻找解决方案,但没有人解释如何解决。我找到了这个,但这不是我的选择。我要的是字符串键,不是数字。给出一种将字符串键用作数组而不是对象的方法?
我需要它,就像这样:
[
{ "ID":"1",
"gameID":"1",
"name":"achv1",
"neededvalue":"50",
"player_achievements":[
{ "ID":"8",
"achievementID":"1",
"playerID":"9",
"value":"",
"completed":""
}
]
},
{
"ID":"2",
"gameID":"1",
"name":"achv2",
"neededvalue":"100",
"player_achievements":[
{ "ID":"9",
"achievementID":"2",
"playerID":"9",
"value":"",
"completed":""
}
]
}
]
我找到了一个答案,我在子元素之前添加了一个零作为数组的键。如果我正确阅读了您的问题,您需要将player\u成就元素设置为包含该元素原始值的数组
<?php
$json = <<<END
[
{"ID":"1",
"gameID":"1",
"name":"achv1",
"neededvalue":"50",
"player_achievements":{
"ID":"8",
"achievementID":"1",
"playerID":"9",
"value":"",
"completed":""
}
},
{"ID":"2",
"gameID": "1",
"name":"achv2",
"neededvalue":"100",
"player_achievements":{
"ID":"9",
"achievementID":"2",
"playerID":"9",
"value":"","completed":""
}
}
]
END;
$data = json_decode($json, true);
for($i=0;$i<sizeof($data);$i++)
{
$data[$i]['player_achievements'] = [$data[$i]['player_achievements']];
}
echo json_encode($data);
那么,让
player\u成就
成为一个对象数组?使用array flag?@Jeff他们失去了一个嵌套级别,这不是序列化格式的问题,问题在于传递给json\u encode()
的数组。如果您显示创建它的代码,我们可以帮助您修复它的结构。可能需要json_decode()然后json_encode()来修改您的数据。这帮助我解决了很多JSON问题。
[
{
"ID": "1",
"gameID": "1",
"name": "achv1",
"neededvalue": "50",
"player_achievements": [
{
"ID": "8",
"achievementID": "1",
"playerID": "9",
"value": "",
"completed": ""
}
]
},
{
"ID": "2",
"gameID": "1",
"name": "achv2",
"neededvalue": "100",
"player_achievements": [
{
"ID": "9",
"achievementID": "2",
"playerID": "9",
"value": "",
"completed": ""
}
]
}
]