2016-11-16 2 views
0

내가 에스퍼 사용하여 다음 JSON 메시지를 처리 ​​할 :에스퍼 액세스 배열 이벤트 propertie

{ 
    "firstname":"John", 
    "lastname":"Do", 
    "address":[{"street":"Maplestreet","number":100,"city":"New York"}] 
} 

때 같은 스키마의 모양을 내 이벤트 속성을 선택하는 올바른 방법은 무엇

create schema Address (street string, number int, city string); 
create schema Person (firstname string, lastname string, address Address[]); 

배열? 나는 시도했다 :

select address[0].street from Person 
select address.street from Person 
select address[0] from Person 
select {address.street} as street from Person 

나는 값을 얻는다. 스키마가 잘못 되었나요? 아니면 뭔가 빠졌습니까?

편집 : 내가하려고하면 :

select * from Person 

나는 결과로 초기 JSON을 얻을

EDIT2 : 이 내 JRuby를 코드 :

address_type = { 
     "street" => "string", 
     "number" => "int", 
     "city" => "string" 
     } 

    epService.getEPAdministrator.getConfiguration.addEventType("Address", address_type) 

    person_type = { 
     "firstname" => "string", 
     "lastname" => "string", 
     "address" => "Address[]" 
     " 
     } 
    epService.getEPAdministrator.getConfiguration.addEventType("Person", person_type) 

답변

0

대부분의 경우 이벤트 객체는 응용 프로그램에 의해 올바르게 채워지지 않습니다. 내가 같은 진술을 테스트하기 위해 동일한 구조에서 Java 클래스를 생성하는 것이 좋습니다. 해당 작품이 원래 사용했던 이벤트 객체 (예 : XML, 객체 배열 또는지도)로 전환되면 ...

+0

감사합니다. 그러나 select *를 Person에서 사용하면 모든 올바른 출력을 얻습니다. 이는 이벤트 객체가 올바른 방식으로 채워지고 있다는 것을 의미합니까? 개별 중첩 된 속성을 선택할 수없는 것 같습니다. – user5526698

+0

엔진으로 보낸 객체의 유형은 무엇입니까? – goodie

+0

좋은 질문입니다. 나는 이것에 조금 새로운 것이다. 내가 사용하는 Jruby 코드로 내 질문을 업데이트했습니다. 나는 이것이 Hash 객체 유형이라고 생각한다. – user5526698