当前位置:  开发笔记 > 编程语言 > 正文

GSON JsonElement.getAsString与JsonElement.toString?

如何解决《GSONJsonElement.getAsString与JsonElement.toString?》经验,为你挑选了1个好方法。

JsonElement#getAsString()vs 之间有什么区别JsonElement#toString()

是否存在应该使用另一个的情况?



1> Marvin..:

假设你指的是JsonElement:

getAsString()

将此元素作为字符串值的便捷方法.

此方法访问并返回元素的属性,即元素的值作为java String对象.

toString()

返回此元素的String表示形式.

此方法是"标准"java toString方法,即返回元素本身的人类可读表示.

为了更好地理解,让我举个例子:

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;

public class GsonTest {

    public static void main(String[] args) {
        JsonElement jsonElement = new JsonPrimitive("foo");

        System.out.println(jsonElement.toString());
        System.out.println(jsonElement.getAsString());

        jsonElement = new JsonPrimitive(42);

        System.out.println(jsonElement.toString());
        System.out.println(jsonElement.getAsString());

        jsonElement = new JsonPrimitive(true);

        System.out.println(jsonElement.toString());
        System.out.println(jsonElement.getAsString());

        jsonElement = new JsonObject();
        ((JsonObject) jsonElement).addProperty("foo", "bar");
        ((JsonObject) jsonElement).addProperty("foo2", 42);

        System.out.println(jsonElement.toString());
        System.out.println(jsonElement.getAsString());
    }
}

输出:

"foo"
foo
42
42
true
true
{"foo":"bar","foo2":42}
Exception in thread "main" java.lang.UnsupportedOperationException: JsonObject
    at com.google.gson.JsonElement.getAsString(JsonElement.java:185)

如您所见,输出在某些情况下非常相似(甚至等于),但在某些其他情况下则不同.getAsString()仅针对基本类型(以及仅包含单个基本元素的数组)定义,并且如果在对象上调用则抛出异常.toString()将适用于所有类型的JsonElement.

现在什么时候应该使用哪种方法?

如果要打印出调试信息,请使用 toString()

如果您知道要处理基本类型并且想要在某处显示或写入值,请使用 getAsString()

如果你不知道的类型,或者如果你想工作与值(即做计算),既不使用.而是检查元素的类型并使用适当的方法.


至于String类型,toString()将添加额外的引号,这可能会引发问题.
推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有