首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从glassfish服务器日志上的javascript函数打印JSON对象

从glassfish服务器日志上的javascript函数打印JSON对象
EN

Stack Overflow用户
提问于 2016-07-30 04:26:25
回答 3查看 892关注 0票数 0

场景:在glassfish 4.1/jdk1.8.45上运行Java servlet。有一个javascript函数正在从数据库中读取,并使用javax.script.*在服务器端执行。当尝试调试此函数时,需要在服务器上输出一些json对象log.It是打印对象对象,而不是使用JSON.stringify()的实际JSON.Tried,它提供了未定义。在这种情况下,有没有办法在json对象上打印实际内容?谢谢。

EN

回答 3

Stack Overflow用户

发布于 2016-07-30 22:05:42

JSON.stringify只支持javascript对象。它不适用于Java对象。请确保您正在JavaScript对象上调用JSON.stringify。

如果您确实需要在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

此脚本用于将Nashorn AST树对象、Java对象转换为友好的JSON对象。

票数 1
EN

Stack Overflow用户

发布于 2016-08-02 16:15:41

如果你想使用JSON.stringify,但它给出了undefined,这是否意味着JSON是未定义的,还是仅仅是函数?如果是这样的话,可能是Nashorn没有在盒子里。也许可以尝试将其添加为polyfill:您可以查看herehere

票数 0
EN

Stack Overflow用户

发布于 2018-08-25 05:38:09

如果您在Nashorn脚本引擎中处理字符串,那么它们很可能是Java字符串而不是javascript字符串。修复方法是将Java字符串转换为Javascript字符串。

代码语言:javascript
复制
// this string does not work with stringify()
var javaString = someMethodReturningAJavaString();

var jsString = new String(javaString);

// now stringify() works:
var myJson = JSON.stringify({'key': jsString});

如果typeof(new String(javaString))返回object而不是string,则使用new String(javaString).valueOf()。对于某些值,这似乎是Mozilla's Rhino js engine的唯一解决方案。

如果您有数字,那么您可能需要在new Number()构造函数中包装java对象。

有关Nashorn引擎的详细信息,请查看https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_guide/javascript.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38666965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档