2012-03-04 5 views
1

리프트 JSON의 for-comprehensions을 사용하여 일부 JSON을 구문 분석합니다. JSON은 재귀 적입니다. 각 레벨에는 id 필드가 있습니다.리피터에서 비 재귀 적 추출 JSON for-comprehension

var ids = for { 
    JObject(parent) <- parse(json) 
    JField("id", JInt(id)) <- parent 
} yield id 

println(ids) 

List(1, 2, 3) 생성

val json = """ 
{ 
    "id": 1 
    "children": [ 
    { 
     "id": 2 
    }, 
    { 
     "id": 3 
    } 
    ] 
} 
""" 

다음 코드 다음은 예이다. 나는 제품 List(1)에 그것을 기대하고 있었다.

제 프로그램에서는 이차 계산이 필요하지만 선형 만 있으면됩니다.

최상위 수준 id 필드 만 일치 시키려면 for-comprehensions을 사용할 수 있습니까?

나는 기본 이해가 재귀 이유를 알아낼 수있을만큼 깊이 파 놓은 광산하지 않은

답변

1

, 그러나 당신은 단순히 검색 루트를 정규화하여이 문제를 해결 할 수 있습니다

scala> for (JField("id", JInt(id)) <- parent.children) yield id 
res4: List[BigInt] = List(1) 

주에게 parent.children의 사용을.