2013-02-08 4 views
1

나는 solr을 통해 검색 중입니다. 그것은 json에서 저에게 응답을줍니다.solj json 파싱 (자바 포함)

{response 
{numfound:# , docs{ 
    [ 
    { 
    id="#" 
    model="#" 
    } 
    { 
    id="#" 
    model="#" 
    } 
    ] 
    } 
    } 

나는 이것에서 ID를 추출하고 그 (것)들에서 자바 배열 명부를 만들고 싶다.

누군가 코딩 언어로 어떻게 할 수 있습니까?

질문 : 아들의 문자열에서 id를 추출하고 Java에서 hashmap 또는 objectmapper를 사용하고 있다면 java 배열 목록으로 변환하는 방법은 무엇입니까?

고맙습니다

당신이 자바 객체로 변환 할 경우 SOLR 클라이언트로 작업 할 수 있습니다 Solrj
가 Solrj 당신과 SOLR를 조회 자바로 변환 XML을 읽을 수있는 쉬운 옵션을 제공합니다

답변

1

는 JSON를 들어
객체 당신은 Solr 응답을 분석하기 위해 jackson 라이브러리를 사용할 수 있습니다.

+0

위의 예제에서 언급 한 바와 같이 json에서 arraylist로 id를 얻는 방법 jackson 라이브러리를 사용하는 방법은 무엇입니까? – user1964901

+1

http://www.sivalabs.in/2011/03/json-processing-using-jackson-java-json.html – Jayendra

0

Jayendra가 가리킨 것처럼 Java를 사용하여 Solr을 쿼리하는 경우 SolrJ을 사용할 수 있습니다. XML 구문 분석 오버 헤드로 인해 XML을 응답 형식으로 사용하지 않는 것이 좋습니다. SolrJ는 commons-codec을 사용하여 java 바이너리 객체 인코딩을 즉시 사용할 수 있으며 기본적으로 쿼리에서 지원합니다.

업데이트에 그것을 사용하려면, 당신은 수동으로

server.setRequestWriter(new BinaryRequestWriter()); 

를 사용하여 설정하는 당신은 사용도 서버에 BinaryUpdateHandler을 활성화해야합니다 :

<requestHandler name="/update/javabin" class="solr.BinaryUpdateRequestHandler" /> 

경우에 당신 돈 SolrJ를 사용하려면 GSON을 사용하여 구문 분석 할 수 있습니다. Here 예와 예입니다.

+0

이렇게하면됩니다. 결과는 무엇입니까? 내 질문에 내가 json 형식으로 쿼리의 결과를 얻을 것 입니다이 일을 의미합니까? 어떻게 ids (위의 예제에서 내 질문에) 추출 할 수 있습니다. – user1964901

1

다음은 Gson 라이브러리를 사용하여 데이터를 읽는 작은 프로그램입니다.

@Test 
public void testRead() throws IOException { 
    final String testUrl = "http://localhost:8983/solr/collection1/select?q=*%3A*&wt=json&indent=true"; 
    String out = new Scanner(new URL(testUrl).openStream(), "UTF-8").useDelimiter("\\A").next(); 
    SolrResult result = new Gson().fromJson(out, SolrResult.class); 
    List<String> ids = new ArrayList<String>(); 
    for (Doc doc : result.response.docs) { 
     ids.add(doc.id); 
    } 
    System.err.println(ids); 
} 

는 응답의 자바 표현으로 다음과 같은 세 개의 작은 클래스를 사용

public class SolrResult { 
    public Response response; 
} 

class Response { 
    public int numFound; 
    public int start; 
    public List<Doc> docs; 
} 

class Doc { 
    public String id; 
} 

도움이 되었기를 바랍니다.