我有一个JSON格式的字符串,我从API调用中得到。但是我从API调用获得的JSON字符串的格式与此类似。
let image = UIImage(named: "Image")
我希望它采用以下格式
{"offset":1,"result":{"host":"x.x.x.x","count":123"}}
注意:请注意折叠JSON中的附加方括号。
我如何在PHP中实现这一目标。我是一个相当新的PHP一点点帮助在这里表示赞赏。谢谢:))
答案 0 :(得分:0)
将原始转换为JSON对象,取出result
。
var originalJSONObj = JSON.parse(original);
var result = originalJSONObj.result;
使用modifiedJSONObj.offset = 1
和modifiedJSONObj.result = []
以及最后modifiedJSONObj.result.push(result)
创建另一个对象。
答案 1 :(得分:0)
在PHP中,类似于:
$json = '{"offset":1,"result":{"host":"x.x.x.x","count":123}}';
$data = json_decode($json);
$data->result = [$data->result];
$json = json_encode($data);
var_dump($json);
答案 2 :(得分:0)
您应该可以使用PHP的json_decode()
和json_encode()
函数执行此操作。类似的东西:
$jsonFromApi = '{"offset":1,"result":{"host":"x.x.x.x","count":123}}';
$array = json_decode($jsonFromApi, true);
$array['result'] = array($array['result']);
$newJson = json_encode($array);
编辑:以下是使用foreach对一系列逗号分隔的json字符串执行此操作的示例。
$originalData = '{"offset":1,"result":{"host":"x.x.x.x","count":123}},{"offset":2,"result":{"host":"x.x.x.x","count":123}},{"offset":3,"result":{"host":"x.x.x.x","count":123}}';
// Convert original data to valid JSON by wrapping it in brackets []. Makes it a JSON array.
$json = '['.$originalData.']';
$array = json_decode($json, true);
$convertedJsonStrings = array();
foreach ($array as $data) {
$data['result'] = array($data['result']);
$convertedJsonStrings[] = json_encode($data);
}
echo implode(',', $convertedJsonStrings);
我们无法直接将json_decode()
用于$originalData
,因为它不是JSON原样。
答案 3 :(得分:0)
// i fixed the json that you are able to receive from the api
// maybe you could check it also
$data = '{
"offset": 1,
"result": {
"host": "x.x.x.x",
"count": "123"
}
}';
// decode the json from api
$data = json_decode($data, true);
// create new data from decoded data
$new_data = array(
'ofsset' => $data['offset'],
'result' => array(
$data['result']
)
);
// encode it again
echo json_encode($new_data);