[解決済み] JsonBuilderを使用して、keyに変数名、valueにその値を指定してjsonを構築するにはどうすればよいですか?
質問
JsonBuilderを使用して、キーと値が同じ名前のjsonを構築するにはどうすればよいですか?
import groovy.json.JsonBuilder
def userId = 12 // some user id obtained from else where.
def json = new JsonBuilder()
def root = json {
userId userId
}
print json.toString()
この場合、次のようなエラーが発生します。
groovy.lang.MissingMethodException: メソッドのシグネチャがありません。 java.lang.Integer.call() は引数の型に適用可能です。 (java.lang.Integer) の値です。[12] 考えられる解決策: wait(), any(), abs(), wait(long), wait(long, int), and(java.lang.Number)です。
キーを引用しても効果がありません。どうしたらうまくいくでしょうか?
編集する
JSONは次のようにしたい。
{ userId: 12 }
. また、キーを文字列で書くとうまくいかないのはなぜですか?
long userId = 12
def json = new JsonBuilder()
def root = json {
"userId" userId
}
提供された例は、単なるスニペットです。状況は、すでに様々な変数を持っている多くのコントローラアクションを持っているということです。今、私は、変数が保持する様々な値でJSON文字列を作成しようとしている部分を追加しています。そのため、既存の変数名を変更することはあまり現実的ではなく、同じ名前でJSON文字列を構築できれば、より一貫性が保たれます。欲しい変数すべてにアクセッサメソッドを書くというのも、エレガントな方法とは言えません。現在私が行っているのは、以下のような異なる命名方法を用いることです。
user_id
に対して
userId
しかし、これでは、私が従っている他の規約と整合性がとれません。そこで、私はエレガントな方法を探しています。
JsonBuilder
はこのように動作します。
JavaScriptの場合。
var a = 1
JSON.stringify({a: a}) // gives "{"a":1}"
となり、期待通りの結果となりました。
どのように解決するのですか?
-
変数に対するアクセサを宣言する
userId
のようなJSONが必要な場合、そのJSONは{userId:12}
として
import groovy.json.JsonBuilder
def getUserId(){
def userId = 12 // some user id obtained from else where.
}
def json = new JsonBuilder()
def root = json{
userId userId
}
print json.toString()
-
もし、JSONが次のようなものである必要があるなら
{12:12}
これは最も単純なケースです。
では
import groovy.json.JsonBuilder
def userId = 12 // some user id obtained from else where.
def json = new JsonBuilder()
def root = json{
"$userId" userId
}
print json.toString()
-
groovyスクリプトのためだけに
def
からuserId
を実行すると、最初の動作が得られます :)
として
import groovy.json.JsonBuilder
userId = 12
def json = new JsonBuilder()
def root = json{
userId userId
}
print json.toString()
アップデイト
ローカル変数は、JSONを構築する際にマップのキー(デフォルトではString)として使用することも可能です。
import groovy.json.JsonBuilder
def userId = 12
def age = 20 //For example
def email = "[email protected]"
def json = new JsonBuilder()
def root = json userId: userId, age: age, email: email
print json.toString() //{"userId":12,"age":20,"email":"[email protected]"}
関連
-
[解決済み] AttributeError: 'list' オブジェクトに 'get' 属性がない?
-
[解決済み] Golang json Unmarshal "予期せぬJSON入力の終了"
-
[解決済み] 文字列のJSON配列はどのように表現するのですか?
-
[解決済み】Goを使ってJSONをpretty-printするにはどうすればいいですか?
-
[解決済み】JSON用のクエリ言語はありますか?
-
[解決済み】ASP.Net MVCでAccess-Control-Allow-Originを設定する - 最もシンプルな方法
-
[解決済み】JSONを表現するためのRedis文字列とRedisハッシュ:効率?
-
[解決済み] Jenkinsfile (groovy)から変数に使用して実行されたシェルコマンドの出力を取得するには?
-
[解決済み】ECMAScript 6でJSONファイルをインポートする方法は?
-
[解決済み] オブジェクトの名前にドットが含まれている場合、その値を取得するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 文字列のJSON配列はどのように表現するのですか?
-
[解決済み] JSONPathで文字列によるフィルタリングを行うには?
-
[解決済み] JSONの未定義の値型
-
[解決済み] JsonBuilderを使用して、keyに変数名、valueにその値を指定してjsonを構築するにはどうすればよいですか?
-
[解決済み】BulbapediaのようなカスタムWikiでWikipedia APIを使用する場合
-
[解決済み】GoでJSONのPost Requestを処理する
-
[解決済み】Map<String, String>をPOJOに変換する。
-
[解決済み】JSON用のクエリ言語はありますか?
-
[解決済み】HTTPの "406-Not Acceptable Response "とは何ですか?
-
[解決済み】SwiftでJSONファイルを読み込む