2014-11-25 3 views
1

저는 이처럼 json리스트 구조를 가지고 있습니다.이 구조체를 읽고 스칼라 목록으로 변환하고 프레임 워크를 재생하는 방법은 무엇입니까? 다음과 같은 JSON 구조가 있었다, 내가 쉽게 할 수 있었다,하지만 난 아니에요 때문에 그 JSON 너무 스칼라 실제로 새로운 구문 분석에 정통한 경우스칼라 플레이에서 주어진 구조로 json을 읽는 방법?

{ 
"0":{ 
    "name":"Foo", 
    "age":10 
    }, 
"12":{ 
    "name":"Bar", 
    "age":10 
    } 
    . 
    . 
    . 
} 

, 내가 JSON와 함께 작동하는 방법을 이해할 수 없었다 첫 번째 예제 에서처럼 키가 "0", "12"인 strucutures. 나는 json/case-class를 생성/파싱하기 위해 Jackson을위한 Jerkson wrapper를 사용했다.

{ 
{"name":"Foo","age":10}, 
{"name":"Bar",age:11} 
} 

업데이트 : 실제로 Ryans의 대답 이외에, JSON 구조를 분석하는 데 성공

,

import play.api.libs.json._ 

case class Doodad(name: String, age: Int) 

object Doodad { 
    implicit val fmt = Json.format[Doodad] 

def parserFuntion = { 
var myJsValue: JsValue = Json.parse(jsonString)// added line in the ans 
    var requiredMap = myJsValue.validate[Map[String, Doodad]] 
} 
    } 

하지만 지금은 새로운 질문, 내가 보인다 작업 json으로 구조를 가지고 예를 들어 조금 불규칙하다 :

{ 
"0":{ 
    "name":"Foo", 
    "age":10 
    }, 
"12":{ 
    "name":"Bar", 
    "age":10 
    }, 
"13":{ 
    "name":"Foobar" 
    "age":20, 
    "meta":{ 
      "desc":"Irregular Json", 
      "img":"Some Link" 
      } 
    }, 
     . 
     . 
     . 
    } 

가능성은 json 목록 요소 중 일부입니다 그 여분의 "메타"키 -> 값 쌍을 가질 수도 있고 그렇지 않을 수도 있습니다. 그래서, 어떻게 그런 상황에 대처할 수 있습니까? 어떤 아이디어?

+0

사례 클래스는 데이터를 읽고 목록으로 변환해야 할 수도 있습니다. 'Seq [Person]'이 될 수 있습니다. – mane

+0

JSON의 키를 나타내는 숫자가 없거나 중복되는 경우 어떻게해야합니까? – drstevens

+0

그냥, 인덱스 키가있을 것이라고 가정합니다. – mane

답변

0
case class Doodad(name: String, age: Int) 

object Doodad { 
    implicit val fmt = Json.format[Doodad] 
} 

myJsValue.validate[Map[String, Doodad]] // JsResult[Map[String, Doodad]] 
+4

안녕하세요, @ryan, 사용법에 대해 조금 자세히 설명해 주시겠습니까 ?? – mane

+2

당신이 알아야 할 모든 것은 문서에 있습니다 : https://www.playframework.com/documentation/2.3.x/ScalaJson – Ryan

+0

나는 문서 링크를 이미 확인했고, 질문에서 지적한 것처럼, 나는 적절하게 할 수 있습니다. 예제에서와 같이 정상 json에 대한 파싱을 수행합니다. 첫 번째 json 구조에만 문제가 있으므로 답변에 대한 간단한 설명을 제공 할 수 없습니까? – mane

관련 문제