我们正在寻找一种方法(可能是现有框架或类似框架)来生成基于 POJO(源代码或二进制文件)的示例 JSON 片段。例如:
public class foo {
String var1;
String var2;
public String getVar1() { return var1; }
public void setVar1(String var1) { this.var1 = var1; }
public String getVar2() { return var2; }
public void setVar2(String var2) { this.var2 = var2; }
}
将产生一个 JSON 示例,如下所示:
{
"var1": "string1",
"var2": "string2"
}
有什么想法吗?我们当然可以手动编写代码。只是想看看外面是否已经有什么东西了。
最佳答案
还有另一个名为 Genson 的库 http://code.google.com/p/genson/ .
实际上 Genson 比 Gson 更快,功能更多,性能接近 jackson(但轻量级多)参见 http://code.google.com/p/genson/wiki/Metrics .它使用 à streaming api 而不是 dom 模型,这带来了更好的可扩展性,并且非常适合 web 应用程序,您可以在输入到达时处理转换。
Genson 非常适合所有类型的用例,从简单的转换到所有流程的完全定制。您可以配置很多东西(使用字段和/或方法,使用带参数且不带任何注释的构造函数,通过可见性过滤属性等等)。你应该看看 wiki。
它的最新版本 (0.91) 可以在 maven 中央存储库中找到。
<dependency>
<groupId>com.owlike</groupId>
<artifactId>genson</artifactId>
<version>0.91</version>
</dependency>
免责声明:我是该库的作者,但我尽量做到客观(尤其是在基准测试中)。
编辑 关于 Gson 和 Jackson 的几句话。我使用 Jackson 已经 2 年多了,还有一点 Gson。首先要注意的是,Jackson 是最快的 json/java 库(Gesnon 试图打败它,但很难)。 Jackson 也有很多功能和配置可能性(大部分基于注释)。我对 Jackson 进行了标准和高级使用,在我需要 Jackson 未提供的功能之前,这一直很好。我发现这个库真的很难扩展(对于我的用例,如果不重写很大一部分是不可能的)。
然后我尝试了 Gson。关于 Gson,首先要注意的是它不使用 getter/setter,而只使用字段!它的表现并不好(尤其是与 jackson 或根森相比)。 在最新版本中,它得到了改进,因为它们还提供了流式 api,但速度仍然不够快。一开始它的主要优势是对 Java 泛型的良好支持,但 Jackson 和 Genson 也提供了它。另请注意,Gson 的开箱即用功能少于 Genson 或 Jackson。 我还尝试在 Gson 中实现我需要的功能,但我发现 Beans 数据绑定(bind)部分不可扩展(几乎所有内容都在一个没有扩展点的类中),所以我必须重写它。这是毫无疑问的,这就是我最终创建 Genson 的原因。
如果你不想使用 Genson,我真的建议你使用 Jackson 而不是 Gson。
关于java - 从 POJO 生成 JSON 样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101023/
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我是Rails的新手,所以请原谅简单的问题。我正在为一家公司创建一个网站。那家公司想在网站上展示它的客户。我想让客户自己管理这个。我正在为“客户”生成一个表格,我想要的三列是:公司名称、公司描述和Logo。对于名称,我使用的是name:string但不确定如何在脚本/生成脚手架终端命令中最好地创建描述列(因为我打算将其设置为文本区域)和图片。我怀疑描述(我想成为一个文本区域)应该仍然是描述:字符串,然后以实际形式进行调整。不确定如何处理图片字段。那么……说来话长:我在脚手架命令中输入什么来生成描述和图片列? 最佳答案 对于“文本”数
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
我有一个非常简单的RubyRack服务器,例如:app=Proc.newdo|env|req=Rack::Request.new(env).paramspreq.inspect[200,{'Content-Type'=>'text/plain'},['Somebody']]endRack::Handler::Thin.run(app,:Port=>4001,:threaded=>true)每当我使用JSON对象向服务器发送POSTHTTP请求时:{"session":{"accountId":String,"callId":String,"from":Object,"headers":
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我