2010-12-18 8 views
4

October에 JSON 컴파일러 및 디 컴파일러를 작성했습니다. 다른 사람들의 JSON에 대해 tests의 무리를 실행 한 후, 나는 그것이 효과가 있고 만족감을 느꼈다. 대부분 컴파일러에 초점을 맞추 었습니다. 컴파일러는 주로 사람들이 당신에게 던질 수있는 모든 변수를 이해하려고 노력하기 때문에 컴파일러에 집중했습니다. JSON은 광고 된대로 매우 쉽게 작업 할 수있었습니다 (그래도 쉬운 일은 아니지만 imho 일 수 있음). 문제 없어.JSON에서 목록을 사용하는 경우

이제 우리는 견인력을 얻기 시작하는 형식을 가지고 있습니다. 의 스트림은 River2입니다. Javascript 개발자는이 데이터의 렌더링에 working을 사용하고 있습니다.이 중 일부는 이미 내가 사용한 것보다 훨씬 좋지만 아직 전환 할 수있는 기능은 없습니다.

하지만 JSON에 문제가 있습니다.

뉴스 비트의 각 그룹은 피드 이름, URL, 피드를 마지막으로 읽은 시간 등의 스칼라 데이터로 구성됩니다. 그런 다음 하나 이상의 뉴스 항목이 있습니다. 항목이 하나뿐이라면 item이라는 구조체 만 포함하면됩니다. 하나 이상의 구조체가 있다면 구조체 목록을 포함합니다. 목록의 이름은 item입니다. JSON에서 반복되는 요소에 대한 규칙이라고 이해했습니다. 화면에서

http://scripting.com/images/2010/12/17/jsonShot.gif

는 두 개의 "updatedFeed"요소가 위에서 촬영. 첫 번째 항목에는 하나의 항목 만 있고 두 번째 항목에는 둘 이상의 항목이 있습니다.

일부 언어의 사람들에게 문제를 일으키는 이유는 (분명히) 사전에 유형을 알지 못한 채로 객체를 다루는 것이 어렵 기 때문입니다. 그래서 그들은 해결책이 간단하다고 항상 말합니다. 그들을 위해 간단하지만 ... :-)

그러나 이것은 내 마지막에는 그렇게 간단하지 않습니다. 일반 JSON 시리얼 라이저를 사용하고 있기 때문에 "항목"이 항상 목록이어야한다는 것을 알 수있는 방법이 없습니다. 그렇지 않으면 ...

이 문제를 해결하는 한 가지 방법은 모든 것을 목록으로 만드는 것입니다.

다른 JSON 제작 환경이 이와 같은 상황에서 어떤 일을하는지 궁금합니다.

+2

"item"은 일반적으로 단일 항목을 나타냅니다. 시퀀스에 실제로 하나의 요소 만있는 경우에도 시퀀스를 암시하기 때문에 "항목"이라고 부르는 것이 더 나을 것입니다. –

+1

왜 모든 경우에 목록으로 만들 수 없습니까? 애플리케이션에 데이터가 어떻게 표시됩니까? 어떤 언어를 사용합니까? – jwueller

+2

JSON으로 변환 할 언어에 대해 이야기하고 다시 이야기하는 것이 도움이 될 것이라고 생각합니다. Frontier는 처음 사용 된 이후로 사용하지 않았지만 (실제로는 파고 만 한 것뿐입니다), 단일 항목 배열/목록으로 시작할 수 있어야하며 serializer에 문제가 없어야합니다. – ohmantics

답변

2

JSON은 직렬화 형식입니다. 매번 같은 (예상되는) 객체가 매번 동일한 스키마를 가지고 있거나 수신기가 유연하고 변경된 부분을 무시하도록 만들어진 경우 일반적으로 가장 잘 작동합니다.

이 경우에는 뉴스 스트림이 항상 동일한 형식이어야한다는 소리를 들으므로 JSON에 "컴파일하는"개체를 조정해야하므로 항상 동일한 구조로되어있는 것처럼 들리거나 JSON Schema과 같은 것을 사용하십시오.