2012-10-25 6 views
3

Apache SOLR은 여러 항목을 한 번에 추가하려는 경우 기발한 JSON 형식을 요구합니다. 간단히 말해서PHP를 통해 중복 키가있는 JSON 데이터

을 - (http://wiki.apache.org/solr/UpdateJSON#Update_Commands가 '추가'노드를 알), I는 다음과 같습니다 JSON 만들 수 있어야합니다 : PHP에서 쉽게 배열을 만들 수 있습니다

{ 
    "key": "val 1", 
    "key": "val 2" 
} 

을하지만, 이 JSON 구조체는 명시 적으로 배열에없는 동일한 이름을 가진 두 개의 키를 가진 객체를 호출합니다.

답변

1

유효한 JSON이 아니기 때문에 json_encode을 사용하여이 작업을 수행 할 수 없습니다. (Keyspace 충돌)

개체를 수동으로 어셈블해야합니다.

개별 항목을 만든 다음 implode()을 사용하는 것이 좋습니다. 그런 다음 {}을 앞에 추가하고 추가 할 수 있습니다.

실제로 json 인코딩을 사용하기 위해 PHP를 해킹하는 것이 실제로 더 깨끗해졌습니다.

내가 PHP와 SOLR에 대한 일광 프로젝트의 큰 팬이에요

대안 제안했다.

벌크 추가하고 아주 쉽게 여기 좀 봐 : http://wiki.solarium-project.org/index.php/V2:BufferedAdd_plugin

+1

왜 당신이 유효하지의 주장합니까? JSON은 대부분 문법적으로 정의되어 있지만 관련 RFC에서는 객체의 이름이 고유해야한다고 말하지만 "해야"하는 것은 "특정 항목을 무시하는 특별한 상황에서 유효한 이유가있을 수 있습니다"라는 의미입니다. – fdreger

+0

그래, 유효한 JSON이지만, 내 대답에서 언급했듯이, 키 콜렉션은 json_encode를 사용하여 형식을 만들 수 없게 만든다. 그리고 예상대로, 당신도 그것을 디코딩 할 수 없습니다. http://codepad.org/hpJk8OSK 완벽하게 유효하지만 완전히 잘못된 JSON입니다. – Layke

+0

XML의 유효성을 SimpleXML과 얼마나 잘 비교하여 판단 하시겠습니까? 아니면 그렇지 않은 경우 "잘못"이라고 생각하십니까? – fdreger

관련 문제