【发布时间】:2018-09-01 13:13:43
【问题描述】:
我正在尝试从 JSONArray 解析一个键:
{
"server": [
{
"id": "1",
"name": "Steve",
"email": "test@gmail.com",
"phone": "1001001000"
}
]
}
因为 id、name、email 和 phone 的键可以动态更改,我们必须在不教授键值的情况下解析结果。也就是说,系统必须同时解析键和值。所以我认为获取一个数组并使用 iterator.hasNext() 将解决问题。
JSONObject jsonObject = new JSONObject(stringBuilder.toString().trim());
JSONArray jsonArray = jsonObject.getJSONArray("server");
for (int current = 0; current < jsonArray.length(); current++){
JSONObject json_object = jsonArray.getJSONObject(current);
Iterator iterator = json_object.keys();
while (iterator.hasNext()){
hashMap.put(iterator.next().toString(), json_object.getString(iterator.next().toString()));
}
}
把迭代器改成jsonObject.keys()还是json_object.keys()都不能正常工作,只解析的key值“id”,无法解析姓名、电子邮件、电话。
这就是我获取 JSON 文件的方式:
$result = mysqli_query($conn, $sql);
$data = array();
if ($result){
while($row=mysqli_fetch_array($result)){
array_push($data,
array('id'=>$row[1],
'name'=>$row[2],
'email'=>$row[3],
'phone'=>$row[4]
));
}
header('Content-Type: application/json; charset=utf8');
$json = json_encode(array("server"=>$data), JSON_PRETTY_PRINT+JSON_UNESCAPED_UNICODE);
echo $json;
【问题讨论】:
-
它无效的 json 格式在这里检查它jsonlint.com
-
我认为它与 PHP 无关
-
@NileshRathod 它是有效的 json(仅缺少
,) -
@AlivetoDie 你的意思是在 "id": "1" 后面应该有 ","?
-
yes 在每个需要的逗号之后。我认为这只是编辑错误