java - .json 字符串中的.equal?

标签 java json deserialization

我正在尝试一些代码,我想将从 json 中获取的字符串与某些值进行比较。然而 if 语句永远不会触发。我已经确认实例的值设置正确,并且可以打印出来。

    //MAKING CLASSES
    Collection collection = new ArrayList();

    Event ev = new Event();
    ev.name = "sven";
    ev.source = "src10";

    Event2 ev2 = new Event2();
    ev2.name = "type";
    ev2.data = "somedata";

    collection.add(ev);
    collection.add(ev2);

    //MAKING A BUNCH OF CLASSES TO JSON
    Gson gson = new Gson();
    String json = gson.toJson(collection);
    JsonParser parser = new JsonParser();
    JsonArray array = parser.parse(json).getAsJsonArray();

    //JSON TO JAVA
    for (int i = 0; i < array.size(); i++) {

        JsonObject nameObject = array.get(i).getAsJsonObject();
        String nameString = nameObject.get("name").toString();

        if (nameString.equals("sven")) {
            System.out.println("this is sven");
            Event event = gson.fromJson(array.get(i), Event.class);

        }

        else if (nameString.equals("type")) {
            System.out.println("this is type");
            Event2 event2 = gson.fromJson(array.get(i), Event2.class);

        }

        else{
            System.out.println("nothing");
        }


    }

最佳答案

根据 Gson API,您对 'nameObject.get("name")' 的调用将返回 JsonElement 。这意味着您应该使用“getAsString()”方法而不是“toString()”:

String nameString = nameObject.get("name").getAsString();

“toString()”方法(通常)是为了调试目的而设计的。并且在程序逻辑中应该非常小心地使用。

关于java - .json 字符串中的.equal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26565468/

相关文章:

java - JMH:无效的初始堆大小

java - JAR 文件在 Eclipse 中呈灰色显示

java - 如何在命令行或 Atom 中导入外部 jar?

scala - 使用 Scala 应用程序将 List[Object] 转换为案例类

java - IIS 在性能和可伸缩性方面与企业 Web 应用程序的 weblogic 和 websphere 相比如何?

javascript - 使用Javascript数组或JSON来存储AJAX请求的返回值以供以后使用

Python 通过 POST 发送一个 JSON 数组

c# - 如何做Json表单MVC模型

java - 我正在 Java 中序列化一个对象,但在反序列化时,它的状态与预期不符。如何保留对象的状态?

c# - 使用 Newtonsoft 将 JSON 数组反序列化为元组列表