2017-05-20 3 views
0

リスト内の各JObjectに対してscenario0scenario1のキーを取得するにはどうすればよいですか?json4s-jacksonでキーと値のJObjectを解析する

poop: List[org.json4s.JsonAST.JValue] = List(JObject(List((street,JString(Bulevard)), (city,JString(Helsinki)))), JObject(List((street,JString(Bulevard)), (city,JString(Helsinki))))) 

コード:

import org.json4s.jackson.JsonMethods._ 
import org.json4s._ 

implicit val formats = DefaultFormats 

val json = parse(""" 
     { 
      "address0": { 
       "scenario0": { 
       "street": "Bulevard", 
       "city": "Helsinki" 
       }, 
       "scenario1": { 
       "street": "Bulevard", 
       "city": "Helsinki" 
       } 
      }, 
      "address1": { 
       "scenario0": { 
       "street": "Bulevard", 
       "city": "Helsinki" 
       }, 
       "scenario1": { 
       "street": "Bulevard", 
       "city": "Helsinki" 
       } 
      } 
     }""") 

val poop = (json \ "address0").children 
poop.foreach(p => { 

}) 

答えて

1
  1. あなたが値を必要と固定スキーマを持っていない場合: val poop: Map[String, Any] = json.asInstanceOf[JObject].values戻り
  2. Map(address0 -> Map(scenario0 -> Map(street -> Bulevard, city -> Helsinki), scenario1 -> Map(street -> Bulevard, city -> Helsinki)), address1 -> Map(scenario0 -> Map(street -> Bulevard, city -> Helsinki), scenario1 -> Map(street -> Bulevard, city -> Helsinki)))をあなたが値を必要として有用である可能性スキーマ、その後extracting of case classを固定している場合。あなたはASTが必要な場合は
  3. val poop = json.asInstanceOf[JObject].objList[org.json4s.JsonAST.JField] = List((address0,JObject(List((scenario0,JObject(List((street,JString(Bulevard)), (city,JString(Helsinki))))), (scenario1,JObject(List((street,JString(Bulevard)), (city,JString(Helsinki)))))))), (address1,JObject(List((scenario0,JObject(List((street,JString(Bulevard)), (city,JString(Helsinki))))), (scenario1,JObject(List((street,JString(Bulevard)), (city,JString(Helsinki)))))))))

P.S.を与えます私は簡単にするためにガーディアンチェックを省いた。

1

はあなたがそれぞれのためのJObjectなどとして、あなたはこのようにそれをしたいわけでください

poopがあります。

json.children.flatMap(_.children) 
res13: List[JValue] = List(
    JObject(List((street,JString(Bulevard)), (city,JString(Helsinki)))), 
    JObject(List((street,JString(Bulevard)), (city,JString(Helsinki)))), 
    JObject(List((street,JString(Bulevard)), (city,JString(Helsinki)))), 
    JObject(List((street,JString(Bulevard)), (city,JString(Helsinki)))) 
) 

しかし、あなたはcirce、プレイJSONまたはアルゴノートのようなライブラリとケースクラスにそれらを解析することがより便利かもしれません。そうすれば、どこにでもjsonを解析する必要はありません。

+0

申し訳ありませんが、私はすでにListを繰り返しています。リスト内の各JObjectは、 'scenario0'と' scenario1'というJObjectのキーを取得したいと思います。したがって、 'JObject(List((street、JString(Bulevard))、(city、JString(Helsinki))))') '' scenario0'を抽出します。私はスカラーにはかなり新しいので、どうすればよいか分かりません= – Liondancer

関連する問題