2016-07-29 11 views
0

シナリオ:glassfish 4.1/jdk1.8.45で動作するJavaサーブレット。データベースから読み込まれ、javax.script。*を使用してサーバー側で実行されるjavascript関数があります。この関数をデバッグしようとすると、JSONオブジェクトをサーバログに出力することが望まれます。実際のJSONの代わりに[オブジェクトオブジェクト]を出力しています.JSON.stringify()を使用して、[未定義]を返します。 このシナリオでjsonオブジェクトの実際の内容を印刷する方法はありますか?おかげさまで glassfishサーバーログのjavascript関数からJSONオブジェクトを出力する

答えて

1

JSON.stringifyは、javascriptオブジェクトのみが動作します。 Javaオブジェクトでは機能しません。 JSON.stringifyをJavaScriptオブジェクトで呼び出すことを確認してください。

JavaオブジェクトにJSON文字列を作成する必要がある場合は、Object.bindProperties拡張子(https://wiki.openjdk.java.net/display/Nashorn/Nashorn+extensions#Nashornextensions-Object.bindProperties)を使用して、Javaオブジェクトのプロパティをスクリプトオブジェクトにバインドし、JSON.stringifyを呼び出すことができます。

サンプル(テスト)コードはこちら - >http://hg.openjdk.java.net/jdk9/dev/nashorn/file/0de67a63e2c7/test/script/nosecurity/treeapi/utils.js

このスクリプトはフレンドリーJSONオブジェクトとしてNashorn ASTツリーオブジェクト[Javaオブジェクト]を変換するために使用されます。

+0

はい、JavaScript内でstringifyを使用しています。javaではありません。私はデバッグステートメントをJavaScript関数の内部から出力したい。 –

+0

スクリプト内でJSON.stringigyを呼び出す部分は問題ありません。私の質問はあなたがJSON.stringifyに渡す引数についてです!それは引数かスクリプトオブジェクトとしてのJavaオブジェクトですか? JSオブジェクトに "undefined"がある場合は、バグのようです。それがJavaオブジェクトならば、それは設計通りです。 –

+0

ok ..私は誤解しました。引数はjsオブジェクトです。 \t var fullJson = formDataHolder.getFullJson()、 \t \t ignoreList = getIgnoreList(); \t \t groupKey =のparseInt(REQ .__ ctrl__groupKey)、 \t \t ITEMKEY =のparseInt(REQ .__ ctrl__itemKey)、 \t \t validateGroup =のparseInt(REQ .__ ctrl__validateGroup)、 \t \t validateItem =のparseInt(REQ .__ ctrl__validateItem)、 \t REQに\t reviewRequested = 'レビュー' \t \t showReview =偽、 \t \t returnJson = {}、 \t \t vItemCheck = validateGroup + '' +有効ateItem、 \t \t itemCheck = groupKey + '。' + itemKey; いくつかの操作の後、私はreturnJsonを印刷しようとしています。 ご協力いただきありがとうございます! –

0

JSON.stringifyを使用していて、定義されていない場合、JSONが定義されていないか、関数のみですか? もしそうなら、Nashornはそれを箱に入れていないかもしれません。おそらくポリフィルとして追加してみてください。hereまたはhereのように見えます。

関連する問題