Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅使用默认库在jython中解码json_Java_Python_Json_Jython - Fatal编程技术网

Java 仅使用默认库在jython中解码json

Java 仅使用默认库在jython中解码json,java,python,json,jython,Java,Python,Json,Jython,我有一个关于将json引入jython脚本的问题。以下是我的设想: 我正在笔记本电脑上运行python应用程序 该应用程序需要与在托管服务器中运行的jython应用程序共享数据 在第三方的云环境中进行环境升级 我无法将第三方模块添加到此环境中(因此我 无法安装com.xhaus.jyson(例如) 这可能意味着我仅限于本机的功能 java-org.json.JSONObject 因此,有了这些限制,我想在我的笔记本电脑上获取一个dictionary对象,将其转换为json,将其交付到托管的j

我有一个关于将json引入jython脚本的问题。以下是我的设想:

  • 我正在笔记本电脑上运行python应用程序
  • 该应用程序需要与在托管服务器中运行的jython应用程序共享数据 在第三方的云环境中进行环境升级
  • 我无法将第三方模块添加到此环境中(因此我 无法安装com.xhaus.jyson(例如)
  • 这可能意味着我仅限于本机的功能 java-org.json.JSONObject
因此,有了这些限制,我想在我的笔记本电脑上获取一个dictionary对象,将其转换为json,将其交付到托管的jython应用程序,然后使用本机jython或java工具将其转换回dictionary对象,这样我就可以在云中托管的脚本中继续处理它

我已经知道如何在“常规”python中实现这一点。这很容易。导入json并开始疯狂。但我的爪哇功夫很弱,我以前从未在jython工作过

因此,我试图弄清楚,是否可以使用jython底层的java可靠、轻松地实现这一点,或者是否最好使用ast之类的工具,并将字典作为字符串文本发送。老实说,出于人们喜欢json的所有正常原因,我更愿意坚持使用json,因此如果您能帮助利用java库来完成这项工作,我将不胜感激。

您可以使用或。您可以使用Java下列出的任何内容,您可以使用“Python”下的内容(例如)。

您可以使用,它可以用作纯Python,因此将在Jython上运行。通过将其包含在与其他代码相同的源代码文件夹中,无需特殊安装。

似乎是一个用纯Java实现python json编解码器的开源项目

请在此处下载:

然后解压并将jyson-1.0.2/lib/jyson-1.0.2.jar添加到类路径中

然后像这样导入:

 import com.xhaus.jyson.JysonCodec as json
thestring = """['name', 'quest', 'favorite color']"""
theobject = ast.literal_eval(thestring)

在此处找到此信息:。对我有用

这个问题有点过时,但我在遇到类似问题时遇到了这个问题:

本质上,我就是这样解决的(使用):

试试看:
sys.path.append(“”)
将simplejson导入为json
除例外情况外,e:
打印e
如果使用,则可以访问python json库。因此:

import json
mydict_as_json = json.dumps(mydict)
# send over the wire
# on the remote side
import json
mydict = json.load(mydict_as_json_from_remote_as_file_like_object)

希望这对……有帮助。

我忘了这个问题。我这里的核心问题是,我使用的是第三方云产品,而他们是Jython安装的所有者,因此我对Jython环境的更改受到限制。当时我在想,我可以利用jython可以使用的JAVA库来解决这个问题,但从来没有成功过

虽然jython不在我的控制范围之内,但我确实控制了如何发送数据,因此我没有使用JSON,而是发送格式化字符串,然后使用jython中的python ast库将这些字符串转换为python对象

最后看起来是这样的:

 import com.xhaus.jyson.JysonCodec as json
thestring = """['name', 'quest', 'favorite color']"""
theobject = ast.literal_eval(thestring)
这种逻辑允许本地机器上的python脚本将字符串发布到运行jython的web应用程序,并将这些字符串转换为python数据类型,然后使用它们。这正是我想在不使用JSON的情况下使用JSON的目的——它是python dicts,所以如果你没有真正注意的话,它看起来非常像JSON


谢谢大家的建议。

运行脚本的整个环境都是从加载脚本的地方抽象出来的。“包含到相对路径”将中断,因为我的脚本在别处运行,而不是在我上载它的地方。所以你的脚本只能包含一个文件?似乎是这样。我是这项服务的新手,但事实似乎如此。因此,我可以将任何默认值导入jython。这意味着我不能像在python中那样导入json。但这确实意味着我可以利用底层java库。但是,我对java很糟糕,这就是我使用Python的原因,因此访问java对我没有多大帮助。如果您使用的是最新版本的jython,那么您可以访问Python json库。所以,请看下面我的答案……感谢Eric跟进您的解决方案!我遇到了同样的情况,这真的节省了我的时间!对于那些必须使用图形的用户,请使用-
导入ast