[英]Find all numeric values in JSON and replace them enclosed in quotes
[{
"SomeValue1": 16237351025487570926,
"SomeValue2": "value2",
"SomeValue3": "value3"
}, {
"SomeValue1": 16237351025487570926,
"SomeValue2": "value2",
"SomeValue3": "value3"
}]
我需要搜索並將SomeValue1替換為相同的值,但用引號引起來(如下所示)。
[{
"SomeValue1": "16237351025487570926",
"SomeValue2": "value2",
"SomeValue3": "value3"
}, {
"SomeValue1": "16237351025487570926",
"SomeValue2": "value2",
"SomeValue3": "value3"
}]
我需要有php正則表達式(在這種情況下,JSON_BIGINT_AS_STRING會有所不同)。
謝謝 !
JSON_BIGINT_AS_STRING
實際上不是其他東西:
$json = '[{
"SomeValue1": 16237351025487570926
}, {
"SomeValue1": 16237351025487570926
}]';
var_dump(json_decode($json));
var_dump(json_decode($json, false, 512, JSON_BIGINT_AS_STRING));
輸出:
array(2) {
[0]=> object(stdClass)#1 (1) {
["SomeValue1"] => float(1.6237351025488E+19)
}
[1]=> object(stdClass)#2 (1) {
["SomeValue1"] => float(1.6237351025488E+19)
}
}
array(2) {
[0]=> object(stdClass)#2 (1) {
["SomeValue1"] => string(20) "16237351025487570926"
}
[1]=> object(stdClass)#1 (1) {
["SomeValue1"] => string(20) "16237351025487570926"
}
}
因此,基本上,您可以執行以下操作:
echo json_encode(json_decode($json, false, 512, JSON_BIGINT_AS_STRING));
如果要轉換每個整數,只需在數組上循環,這僅適用於實際上是浮點數的足夠大的整數:
foreach($arr = json_decode($json, true, 512, JSON_BIGINT_AS_STRING) as $key => $value){
foreach($value as $k => $v){
if(gettype($v) == 'integer'){
$arr[$key][$k] = (string) $v;
}
}
}
echo json_encode($arr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.