문자열을 JSON 객체 PHP로 변환
SQL 쿼리에서 다음과 같은 결과가 있습니다.
{"Coords":[
{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},
{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},
{"Accuracy":"65","Latitude":"53.27770755361785","Longitude":"-9.011979642121824","Timestamp":"Fri Jul 05 2013 12:02:09 GMT+0100 (IST)"},
{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"},
{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"}
]
}
현재 PHP의 문자열이며 이것을 JSON 객체로 변환하는 쉬운 방법이 있습니까 (이미 JSON 형식이라는 것을 알고 있습니다).
이미 좌표가 무엇인지와 같은 추가 항목 / 요소 / 개체를 추가 할 수 있도록 개체 여야합니다.
편집 : 죄송합니다, 나는 오래되거나 잘못된 문자열을 붙여 넣었습니다!
@deceze가 말한 것이 맞습니다. JSON이 잘못된 것 같습니다. 다음을 시도하십시오.
{
"Coords": [{
"Accuracy": "30",
"Latitude": "53.2778273",
"Longitude": "-9.0121648",
"Timestamp": "Fri Jun 28 2013 11:43:57 GMT+0100 (IST)"
}, {
"Accuracy": "30",
"Latitude": "53.2778273",
"Longitude": "-9.0121648",
"Timestamp": "Fri Jun 28 2013 11:43:57 GMT+0100 (IST)"
}, {
"Accuracy": "30",
"Latitude": "53.2778273",
"Longitude": "-9.0121648",
"Timestamp": "Fri Jun 28 2013 11:43:57 GMT+0100 (IST)"
}, {
"Accuracy": "30",
"Latitude": "53.2778339",
"Longitude": "-9.0121466",
"Timestamp": "Fri Jun 28 2013 11:45:54 GMT+0100 (IST)"
}, {
"Accuracy": "30",
"Latitude": "53.2778159",
"Longitude": "-9.0121201",
"Timestamp": "Fri Jun 28 2013 11:45:58 GMT+0100 (IST)"
}]
}
json_decode
문자열을 객체 ( stdClass
) 또는 배열 로 변환하는 데 사용 : http://php.net/manual/en/function.json-decode.php
[편집 됨]
"공식 JSON 객체"가 의미하는 바를 이해하지 못했지만 PHP를 통해 json에 콘텐츠를 추가 한 다음 다시 JSON으로 변환한다고 가정 해 보겠습니다.
다음 변수가 있다고 가정합니다.
$data = '{"Coords":[{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27770755361785","Longitude":"-9.011979642121824","Timestamp":"Fri Jul 05 2013 12:02:09 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"}]}';
이를 Object (stdClass) 로 변환해야합니다 .
$manage = json_decode($data);
그러나 작업 stdClass
은 PHP-Array보다 더 복잡합니다. 그러면 다음을 시도해보십시오 (두 번째 매개 변수 사용 true
).
$manage = json_decode($data, true);
이렇게하면 배열 함수를 사용할 수 있습니다 : http://php.net/manual/en/function.array.php
항목 추가 :
$manage = json_decode($data, true);
echo 'Before: <br>';
print_r($manage);
$manage['Coords'][] = Array(
'Accuracy' => '90'
'Latitude' => '53.277720488429026'
'Longitude' => '-9.012038778269686'
'Timestamp' => 'Fri Jul 05 2013 11:59:34 GMT+0100 (IST)'
);
echo '<br>After: <br>';
print_r($manage);
첫 번째 항목 제거 :
$manage = json_decode($data, true);
echo 'Before: <br>';
print_r($manage);
array_shift($manage['Coords']);
echo '<br>After: <br>';
print_r($manage);
데이터베이스 또는 파일 에 json에 저장하려는 경우 :
$data = '{"Coords":[{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27770755361785","Longitude":"-9.011979642121824","Timestamp":"Fri Jul 05 2013 12:02:09 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"}]}';
$manage = json_decode($data, true);
$manage['Coords'][] = Array(
'Accuracy' => '90'
'Latitude' => '53.277720488429026'
'Longitude' => '-9.012038778269686'
'Timestamp' => 'Fri Jul 05 2013 11:59:34 GMT+0100 (IST)'
);
if (($id = fopen('datafile.txt', 'wb'))) {
fwrite($id, json_encode($manage));
fclose($id);
}
귀하의 질문을 이해했으면합니다.
행운을 빕니다.
유효한 JSON 문자열을 다시 변환하려면 json_decode()
메서드를 사용할 수 있습니다 .
다시 객체로 변환하려면 다음 방법을 사용하십시오.
$jObj = json_decode($jsonString);
연관 배열로 변환하려면 두 번째 매개 변수를 true
다음 과 같이 설정하십시오 .
$jArr = json_decode($jsonString, true);
By the way to convert your mentioned string back to either of those, you should have a valid JSON string. To achieve it, you should do the following:
- In the
Coords
array, remove the two"
(double quote marks) from the start and end of the object. - The objects in an array are comma seprated (
,
), so add commas between the objects in theCoords
array..
And you will have a valid JSON String..
Here is your JSON String I converted to a valid one: http://pastebin.com/R16NVerw
you can use this for example
$array = json_decode($string,true)
but validate the Json before. You can validate from http://jsonviewer.stack.hu/
Try with json_encode()
.
And look again Valid JSON
참고URL : https://stackoverflow.com/questions/17488207/convert-a-string-to-json-object-php
'IT Share you' 카테고리의 다른 글
facet_wrap 레이블을 완전히 제거하십시오. (0) | 2020.12.07 |
---|---|
인증 된 CORS 요청의 프리 플라이트 OPTIONS 요청이 Chrome에서는 작동하지만 Firefox에서는 작동하지 않는 이유는 무엇입니까? (0) | 2020.12.07 |
chart.js (chartjs.org)의 모든 차트 유형에 레이블 / 범례를 추가하려면 어떻게해야합니까? (0) | 2020.12.07 |
여러 in 연산자를 사용하는 crudrepository findBy 메서드 서명? (0) | 2020.12.07 |
C ++ 컴파일러가 더 나은 상수 폴딩을 수행하지 않는 이유는 무엇입니까? (0) | 2020.12.07 |