2012-04-03 5 views
6

EDIT :entry.content.$t은 개별 셀에 액세스하는 데 잘못된 입력란입니다. entry.gsx $ [셀 열 머리글]이 올바른 방법입니다. 이 문제를 해결하는 데 도움을 준 사과와 감사합니다.Google 스프레드 시트에서 JSON을 구문 분석하십시오.

원래 질문 :

나는 JSON data from a Google Spreadsheet을 구문 분석하는 데 노력하고있어. 문제는 항목 필드가 스프레드 시트의 전체 행 인 문자열을 반환하지만 형식이 잘못된 개체로 나타납니다. 다른 사람들이이 데이터를 어떻게 파싱합니까?

"content": 
{ 
    "type" :"text", 
    "$t"  :"location: 780 Valencia St San Francisco, CA 94110, 
       phonenumber: (555) 555-5555, 
       website: http://www.780cafe.com, 
       latitude: 37.760505, 
       longitude: -122.421447" 
}, 

봐 신중 $t 필드는 구글 스프레드 시트의 행입니다 전체 문자열을 반환 : 다음과 같은 내용 노드가 모습입니다. 따라서 entry.content.$t은 문자열을 반환합니다. location: 780 Valencia St San Francisco, CA 94110, phonenumber: (555) 555-5555...

스프레드 시트의 일부 셀에는 이스케이프 또는 인용되지 않은 쉼표 (예 : 주소)가 있습니다.

jQuery.parseJSON(entry.content.$t) 

또는

eval('('+ entry.content.$t + ')') 

같은 뭔가 오류가 발생합니다. 나는 정규 표현식이 옵션이라고 생각하지만, 다른 사람들이 이것을 좀 더 우아한 방법으로 풀어주기를 희망하고있다. 도와 주셔서 감사합니다!

+1

:-) 도움이 될 것입니다

var currentPropertiesText = jsonEntry['content']['$t']; // var propsArray = currentPropertiesText.split(", "); var re = /(\w+): (.+?(?=(?:, \w+:|$)))/mgi; var propsArray = re.exec(currentPropertiesText) var props = {}; while (propsArray != null) { var propName = propsArray[1]; var propValue = propsArray[2]; props[propName] = propValue; propsArray = re.exec(currentPropertiesText); } 

? 타입 셀이나 타입리스트를 사용합니까? (http://code.google.com/apis/gdata/samples/spreadsheet_sample 참조).html) – HBP

+1

예제를 자세히 살펴보면, JSON을 요청하는 방법이나 스프레드 시트 데이터 자체에서 문제가 있다고 생각합니다. 볼 수 있듯이 전체 행을 텍스트 필드로 받아서는 안됩니다. 행과 열을 나타 내기 위해 데이터에 객체와 배열의 조합을 가져와야합니다. –

+0

Doh! 나는 그것을 알아. 알았어. 잘못된 노드를 추출 중입니다. 분명히 각 셀에 대해 개별 객체를 반환합니다. 내 실수. 이것을 잡으려고 너무나 감사합니다. – jrue

답변

1

$t 속성의 "text"는 JSON이 아닙니다. 문서에 따르면, 텍스트 노드는 $t 속성으로 변환되어 있으므로 올바른 형식의 JSON이 무엇이든 의존 할 수 없습니다.

정규식 대신 사용하는 것이 좋겠지 만, 그 결과물을 분석하려면 약간의 멋진 것들이 필요할 것입니다. 쉼표로 나눌 수 없으므로 어서션을 사용하게 될 것입니다. (\w+):을 검색해야하지만 다음 요소를 찾으려면 다른 일치 항목 인 (\w+):까지 가져 가야합니다. 그것을 중얼 거리지 마라. 그것은 할 수 있습니다.

1

최근에 나는 아주 똑같은 문제가있었습니다.

$의 t의 내용을 분석하려면이 정규식을 사용할 수 있습니다

/(\w+): (.+?(?=(?:, \w+:|$)))/mgi 

은 키 - 값 쌍을 반환합니다.

자바 스크립트 예 : 요청 당신이 JSON 데이터를 얻기 위해 사용되는 어떤

관련 문제