2013-04-02 5 views
1

나는 이런 식으로 나에게 데이터를 반환하는 웹 서버에서 읽어 : 그것은 JSON :: XS에 의해 말 유효한 JSON 형식의 데이터를하지 보인다Perl에서 JSON 변수를 구문 분석하는 방법은 무엇입니까?

{'status':{"t":1, "f":1, "p":2, "i":1}} 

. 어떻게 해석 할 수 있습니까?

+1

웹 서비스에 버그를 신고하고 해결하도록하십시오? :) –

답변

3

JSON::XS에는 작은 따옴표를 허용하는 토글이없는 것 같지만, JSON은 그렇지 않습니다.

use strict; 
use warnings; 
use JSON -support_by_pp 

my $source = q({'status':{"t":1, "f":1, "p":2, "i":1}}); 
my $parsed = JSON->new->allow_singlequote->decode($source); 

자세한 내용과 자세한 내용은 JSON module docs을 참조하십시오.

3

JSON 형식 here의 사양을 확인할 수 있습니다. 귀하의 경우 문제는 작은 따옴표 status 일 가능성이 큽니다. 대신 일반 따옴표를 사용하는 경우 구문 분석해야합니다

{"status":{"t":1, "f":1, "p":2, "i":1}} 

당신은 http://jsonlint.com/

+0

사실, 나는 'status':,''sth ': { "sth": "as \"로 혼합 된 매우 큰 데이터 (8KB 크기의 단일 라인) df "....". 나는/s/'/ "/ g'이 효과가 있을지 확신하지 못합니다. – nfpyfzyf

+0

아니요, 작동하지 않습니다. 그러나 방화범이 잘 퍼스를 파싱합니다. – nfpyfzyf

+1

나는 클라이언트 측에서 regexp를 대체하려고하지 않고 서버 측에서이 문제를 해결할 것을 제안합니다. 다른 사람들이이 서비스를 사용하는 경우 동일한 문제가 발생할 가능성이 있습니다. 그래서 소스에서 문제를 해결하십시오. – NilsH

1

그것은 유효한 자바 스크립트입니다 귀하의 JSON의 유효성을 확인하실 수 있습니다. 따라서 파서를 직접 작성하지 않으려면 JavaScript engine으로 전달하여 평가 및 JSON으로 변환하십시오.

+1

유효한 자바 스크립트이지만 올바른 JSON이 아닙니다. – RickF

+0

@RickF ... so? 어떻게 중요합니까? 아니면 이케 가미가 어떻게 다르게 요구합니까? –

+0

@RickF, 알아요. 제가 게시 한 것을 다시 읽어주십시오. 유효한 JSON이라고 믿는다면 내 게시물은 의미가 없습니다. – ikegami

관련 문제