我的Android应用程序必须解析几种类型的json文本,例如下面的例子。
{{ field|escapejs }}
所以我想创建一个类来管理这个应用程序必须解析的每个json文本。喜欢" JsonUtil.java"
我这样做了这个课。
{
"text": "Hello World !",
"site": "http://helloworld.com"
}
我使用嵌套类的原因太多了" VO.java"课程可能会刺激整个包装结构(我不知道为什么,只是我的口味:P太多课程让我变得复杂。)
所以用法是这样的,
public class JsonUtil {
public static final String TAG = JsonUtil.class.getSimpleName();
public JsonUtil() {
}
public NotificationAd parseNotificationAd(JSONObject jsonObject) {
NotificationAd notificationAd = new NotificationAd();
try {
notificationAd.message = jsonObject.getString("text");
notificationAd.targetUrl = jsonObject.getString("site");
} catch (Exception e) {
e.printStackTrace();
}
Log.i(TAG, "parseNotificationAd, notificationAd: " + notificationAd.toString());
return notificationAd;
}
public class NotificationAd {
public String message;
public String targetUrl;
@Override
public String toString() {
return String.format("message: %s, targetUrl: %s", message, targetUrl);
}
}
}
我想知道我是否正确,实际上我想让课程成为"抽象",然后将方法设为"静态"如下。
JsonUtil.NotificationAd notificationAd = new JsonUtil().parseNotificationAd(response);
String message = notificationAd.message;
String targetUrl = notificationAd.targetUrl;
但我认为下一个代码存在一些内存问题(这点我需要一些帮助。我对JAVA并不专业。)
有人可以建议哪个是android中Json解析器的最佳实践吗?
(我知道Retrofit库,但请不要在这个问题中提及它:P)
非常感谢每一个答案!
答案 0 :(得分:0)
答案 1 :(得分:0)
查看这个简单易用的教程Getting Started with GSON。
您可以使用Gradle在项目中包含GSON依赖项:
compile 'com.google.code.gson:gson:2.3.1'
答案 2 :(得分:0)
只需使用Gson
给出您的样本数据。此方法显示了使用json
或Gson
String
转换为JSONObject
的两种不同方法
public class Main {
public static void main(String[] args) {
new Main().gsonExample();
}
/* Sample data
{
"text": "Hello World !",
"site": "http://helloworld.com"
}
*/
private void gsonExample() {
// sample data without the pretty printing
String jsonText = "{\"text\": \"Hello World !\",\"site\": \"http://helloworld.com\"}";
// manually convert
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("text", "Hello World !");
jsonObject.addProperty("site", "http://helloworld.com");
// assert the generated json is equal to the sample data
assert jsonObject.toString().equals(jsonText);
Model modelFromJsonObject = new Gson().fromJson(jsonObject.toString(), Model.class);
Model model = new Gson().fromJson(jsonText, Model.class);
// assert the two models are equals
assert modelFromJsonObject.equals(model);
// assert the text is set correctly
assert "Hello World !".equals(model.text);
System.out.println("All tests passed!");
}
public static class Model {
public String text;
public String site;
}
}