문자열을 JSON으로 변환 할 수 없습니다. 유효한 JSON에 대한 문자열 및 PHP에서 JSON 구문 분석

Gunaseelan

다음 JSON (잘못된) 문자열이 있습니다. 그것을 구문 분석하고 내부 값을 가져와야합니다. 나는 많이 시도했지만 결과를 얻지 못했습니다.

    $sJson = '{"Place":"MyStore","PurchaseID":"IND.1234-5678-9012-34567","details":"{\"json\":\"{\\\"PurchaseID\\\":\\\"IND.1234-5678-9012-34567\\\",\\\"categoryname\\\":\\\"smartpack\\\",\\\"productname\\\":\\\"bitcoinpack1\\\",\\\"purchaseTime\\\":1504256011148,\\\"purchaseState\\\":\\\"Success\\\",\\\"UniqueToken\\\":\\\"jbbefjifdkpdpajfkomckoof.AO-J1OzEdsZX17M5pAvedDh1Ep_WwlOKamMQN_3O89bRbAPX-uoqPpTJf8EdNcjMhCK1dptGaWReUCSS9JGCJuh6GlAT0l11mkUddo_uJ4YOe8ezYxlmDQ8\\\"}\",\"currentvalue\":\"S270U2J3XF\\/+XnC1ocPp0d\\/Kwf\\/4B\\/\\/tT7urbDn6F+\\/D8j7VD1t8qqwevtKDnAafAtvocPg4Eevkf\\/GZKl1YOgUYyuY63nyekz7GRDuIKVXAZ+iZtPAbwCuwZplUQHaVA\\/EBMjYpPQM0EFtp2WuX\\/Tx9nTnFCtU+gAK4Rg0zLvQNKSJx5WfqhK7wf0wHTTYviTkB\\/pETnkV22oQDIZH9\\/Fy1FXltC7FXHXoMcxtGvkgPSEFOnms4HumjUQ5PtQUbxh\\/oirQeROCAhkO+WKX9WO3bCKjru1uuxspTLCNGJEKAezi2GEBcpFGjq4iS5N7SfO5BOF76\\/joLe3B7OemJNw==\"}"}';

    $sJson = json_encode($sJson,JSON_UNESCAPED_SLASHES);
    $json_array = (array) json_decode($sJson,true);
    $newjson=preg_replace('/.+?({.+}).+/','$1',$json_array);
    var_dump($newjson);
    exit;

결과 $newjson는 JSON 객체로 반환되지 않으며 문자열로만 제공됩니다.

문자열이 아닌 JSON 개체가 필요합니다.

주어진 JSON에서 jsonvalue는 .txt로 시작하는 문자열 (유효한 JSON 내부)입니다 ".

이것을 제거해야합니다.

Aynber

문자열은 대부분 유효한 json이므로 몇 가지만 조정하면됩니다.

첫째, 모든 교체 \\"와 함께 ". (나는 이것을 두 번 실행해야했다)

$string = str_replace('\\"', '"', $string);

그런 다음 일부 중괄호가 인용됩니다.

$string = str_replace('"{', '{', $string);
$string = str_replace('}"', '}', $string);

완료되면 json을 성공적으로 디코딩 할 수있었습니다. 이것은 preg_replace로 더 빨리 할 수 ​​있지만 정규식을 빤다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관