1

私はJObjectを呼び出しました:

jObject.values

だから私はMap [String、Any]を取得します。このマップを変更し、Map[String, Any] の新しいインスタンスを取得します。そして今、「値」メソッドとは逆のことを達成しません。Map[String, Any] を JObject (または json 文字列) に変換しません。

4

1 に答える 1

2

.valuesを呼び出すと、フィールドに関連付けられた型情報が失われるため、やや注意が必要です (したがって、マップの値の型が である理由Any)。

を取得するには、コンストラクターにJObjecta を渡す必要があります。List[JField]したがって、各マップ エントリ ( (String, Any)) をJField. 名前のマッピングは簡単です。課題は を に変換するAnyことJValueです。

おそらく、パターン マッチングまたは型チェックを使用して何かを行うことができます (たとえば、値が の場合は、Intint にキャストして a でラップしますJInt) が、すべての不完全なパターン マッチングと同様に、これは脆弱になります。それらが出てきた方法でそれらを元に戻すための非プリミティブですか?


したがって、一般的に、これを行う最善の方法は、の出力からこれを行うのではなく.values、オブジェクトをそれ自体に渡すことです。型情報を失ってしまうと、完全に元に戻すことは難しく、ほとんどの解決策には脆弱な当て推量が必要になります。

于 2012-07-09T11:48:59.680 に答える