[英]How to serialize object to JSON string using classes from “org.json” package?
我试图找到任何有用的示例来解决此简单任务,但是,没有发现任何真正有用的示例。 我是Java的初学者,我肯定需要帮助。
我有两个简单的Java类:
private class FMList {
public List<FMItem> items = new ArrayList();
public long size = 0;
public int dirs = 0;
public int files = 0;
public String path = "";
}
private class FMItem {
public boolean is_dir = false;
public String[] ascii = {};
public String name = "";
public String mode = "";
public long size = 0;
public long mtime = 0;
public boolean ext = false;
public String cache = "";
}
我的应用程序(小程序)创建FMList
的实例,将数据设置为对象属性,最后将对象序列化为JSON字符串。
首先,我尝试了Google Gson库。 简单的new Gson().toJson(fmList)
完美地完成了这项工作,但是我的applet无法开始给出Gson库有点像安全性问题的例外。 同时,小程序已签名并且所有AccessController都已设置。
然后,我尝试使用JSON官方网站上的类。 不再有例外,但是简单的new JSONObject(fmList).toString()
仅提供{}
。 我知道应该以其他方式使用它。
使用"org.json"
包中的类将此简单对象序列化为JSON字符串的正确方法是什么?
谢谢你的帮助!
对于像您正在使用的字段访问(不是get / set方法),必须指定它们: http : //www.json.org/javadoc/org/json/JSONObject.html#JSONObject(java.lang.Object,java。 lang.String [])
您可以使用JSON Writer或“ Stringer”(写入流或创建String)来获取精美的json。
http://www.json.org/javadoc/org/json/JSONWriter.html
http://www.json.org/javadoc/org/json/JSONStringer.html
更新:该类也不能通过简单的org.json lib私有。 这工作正常:
public class Main {
public static class FMList {
public long size = 0;
public int dirs = 0;
public int files = 0;
public String path = "";
}
public static void main(String[] args) {
System.out.println(new JSONObject(new FMList(), new String[] { "dirs", "files" }).toString());
}
}
产生: {"files":0,"dirs":0}
改用私人课程会产生: {}
JSONObject期望使用getter,但是您的类仅使用公共变量而不是getter:
JSONObject(java.lang.Object bean)
Construct a JSONObject from an Object using bean getters.
http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject(java.lang.Object )
可以理解,您正在专门使用org.json
包进行序列化,但是如果您对其他库开放,那么Xstream确实很容易用于XML相关任务,例如JSON序列化。 这是JSON教程: http : //x-stream.github.io/json-tutorial.html 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.