2016-12-07 2 views
0

でJSONオブジェクト例外:Find the maximum value from JSON data in ScalaないScalaの

私はスカラ座でのプログラミングに非常に新しいです、と述べたポスト内の1つの解決策の状態として、私は次のコードをテストしてい:

import collection.immutable.IndexedSeq 
import com.google.gson.Gson 
import com.google.gson.JsonObject 
import com.google.gson.JsonParser 

case class wrapperObject(val json_string: Array[MyJsonObject]) 
case class MyJsonObject(val id:Int ,val price:Int) 

object Demo { 

    val gson = new Gson() 
    def main(args: Array[String])={ 
    val json_string = scala.io.Source.fromFile("jsonData.txt").getLines.mkString 
    //val json_string= """{"json_string":[{"id":1,"price":4629},{"id":2,"price":7126},{"id":3,"price":8862},{"id":4,"price":8999},{"id":5,"price":1095}]}""" 
    val jsonStringAsObject= new JsonParser().parse(json_string).getAsJsonObject 
    val objectThatYouCanPlayWith:wrapperObject = gson.fromJson(jsonStringAsObject, classOf[wrapperObject]) 
    var maxPrice:Int = 0 
    for(i <- objectThatYouCanPlayWith.json_string if i.price>maxPrice) 
    { 
     maxPrice= i.price 
    } 
    println(maxPrice) 
} 
} 

私はラインで15 java.lang.IllegalStateExceptionを、次のエラーを取得しています:未JSONオブジェクト:

JSONファイルの内容は次のとおりです。

[{ "id":978,"price":2513}, 
{ "id":979,"price":8942}, 
{ "id":980,"price":1268}, 
{ "id":981,"price":5452}, 
{ "id":982,"price":5585}, 
{ "id":983,"price":9542}] 

このエラーが表示される理由は不明です。どんな助けもありがとう。ありがとう。

+0

ファイルに有効なjsonが含まれていません。 jsonData.txtの内容を共有してください。しかし、あなたの問題を強調するjsonフォーマッタをオンラインで検索します。 –

+0

質問をJSONファイルの内容で編集しました。私はGSONを使って検索し、試しました。 – hshantanu

+0

'.getAsJsonObject'ではなく' .getAsJsonArray'を使用していれば、あなたのコードがうまくいったと思います。 –

答えて

1

JSONファイルが有効なJSON形式ではありません。あなたはwrapperObjectで実装ロジックに従って、あなたのファイルは、次のようになります。その後、出力9542を与える

{ 
    "json_string": [ 
     { "id":978,"price":2513}, 
     { "id":979,"price":8942}, 
     { "id":980,"price":1268}, 
     { "id":981,"price":5452}, 
     { "id":982,"price":5585}, 
     { "id":983,"price":9542} 
    ] 
} 

を。コメントされたバージョンのjson_stringが実際に有効で、出力は8999になることに注意してください。

JSON形式は属性値のペアですが、ファイルの値はArray[MyJsonObject]です。 wrapperObjectケースクラスの場合、json_stringが属性です。Gsonは、データをwrapperObjectのオブジェクトに解析するために必要です。

+0

ありがとうございます。 – hshantanu

関連する問題