首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jython和Jackson

Jython和Jackson
EN

Stack Overflow用户
提问于 2015-03-13 00:31:24
回答 2查看 422关注 0票数 0

首先,我是Jython的新手。我正在寻找一种将python代码集成到Java项目中的方法。因此,我正在研究Jython。

我正在尝试用python将json字符串转换成java对象。

首先,我一直在努力让Jython找到我的java类。在缺乏更优雅的解决方案的情况下,我能够通过简单地执行以下操作来继续前进:

代码语言:javascript
复制
import sys
sys.path.append('/home/anton/workspaces/m/TradePerformance/lib/jackson-databind-2.5.1.jar')
sys.path.append('/home/anton/workspaces/m/TradePerformance/lib/jackson-core-2.5.0.jar')

不管怎样..。

我正在尝试以下操作:

代码语言:javascript
复制
url = 'myRestService...'
response = urllib2.urlopen(url).read()
print response
import sys

mapper =  ObjectMapper
trades = ArrayList<TradeOrder>()
#trades = mapper.readValue(response, ArrayList<TradeOrder>().__class__, "");
#trades = mapper.convertValue(ArrayList<TradeOrder>().__class__, response)
#trades= mapper.reader
trades = mapper.readValue(response, ArrayList<TradeOrder>().__class__)

但是,在运行时,我得到以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/home/anton/workspaces/m/TradePerformance/src/com/test/test.py", line 41, in <module>
    trades = mapper.readValue(response, ArrayList<TradeOrder>().__class__);
TypeError: readValue(): expected 3-5 args; got 2

我不知道为什么Jython说它需要3-5个参数。根据http://fasterxml.github.io/jackson-databind/javadoc/2.0.0/com/fasterxml/jackson/databind/ObjectMapper.html上的JavaDocs,这个方法有3个重载,并且都需要2个参数。

有人知道问题出在哪里吗?

EN

回答 2

Stack Overflow用户

发布于 2015-03-13 02:05:11

self可以算作参数。所以,你实际上是在尝试传递三个参数。那不是你的问题。

你应该在你的Jython中去掉<TradeOrder>类型的参数,这是不必要的,实际上在ArrayList中也是错误的。

票数 0
EN

Stack Overflow用户

发布于 2015-03-13 06:59:32

这可能不是您的主要问题,但是作为JSON的一般最佳实践,根值应该始终是JSON对象,而不是标量或数组。这就避免了很多类似Java类型擦除的问题。这并不是说您不能让List和这样的集合工作,而是说对于泛型类型需要格外小心--只要根值是一个对象,就不需要做这些工作。

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

https://stackoverflow.com/questions/29015288

复制
相关文章

相似问题

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