Java中相当于Python的json.dumps函数

6

Python代码:

import json
jsonvalue = json.dumps({"key":key_string,"value":unsafe_string})

cursor_mysql.execute("""UPDATE data SET json = %s WHERE id = %s""", (jsonvalue, somerowid)) 

jsonvalue是一个有效的json,由json.dumps生成,即使unsafe_string包含Unicode字符。Java中有类似的函数吗?


可能是http://stackoverflow.com/questions/338586的重复问题,那里有更好的Java JSON库。 - Simon Whitaker
3个回答

8
你需要使用json-simple 或者 Google的gson
使用json-simple进行编码:编码示例
  JSONObject obj=new JSONObject();
  obj.put("name","foo");
  obj.put("num",new Integer(100));
  obj.put("balance",new Double(1000.21));
  obj.put("is_vip",new Boolean(true));
  obj.put("nickname",null);
  System.out.print(obj);


Result: {"balance":1000.21,"num":100,"nickname":null,"is_vip":true,"name":"foo"} 

同样地,解码也是如此。


1
这不会在冒号后面添加空格。是否有一个库可以产生与Python的json.dumps完全相同的输出?json.dumps({'foo':'bar'}) = '{"foo": "bar"}' - Stimp
这并不完全相同。json.dumps() 生成一个字符串,而 JSONObject() 生成一个对象。 - Melissa Guo
@MelissaGuo JSONObject的toString()方法返回格式良好的JSON字符串。 - zengr
@Stimp,你找到了将python的'{"foo": "bar"}'匹配到java的{'foo':'bar'}的解决方案了吗? - electronic_coder
@Stimp,我能够完成它,但是无法保留缩进。请查看此链接:https://stackoverflow.com/questions/61952317/after-a-customprettyprinter-in-jackson-indentation-settings-are-not-working - electronic_coder

4

使用Jackson

ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(dst, obj); // where 'dst' can be File, OutputStream or Writer

1

使用flexjson

String json = new flexjson.JSONSerializer().serialize(obj);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接