Java(Android) - 什么是Json解析器的最佳类示例?

时间:2015-10-21 05:21:15

标签: java android json abstract-class static-methods

我的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)

非常感谢每一个答案!

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

查看这个简单易用的教程Getting Started with GSON

您可以使用Gradle在项目中包含GSON依赖项:

compile 'com.google.code.gson:gson:2.3.1'

答案 2 :(得分:0)

只需使用Gson给出您的样本数据。此方法显示了使用jsonGson

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;
    }
}