簡體   English   中英

GSON JSON解析字符串與POJO

[英]GSON JSON Parsing String versus POJO

gson解析器可以將JSON字符串解析為String ,但無法將該JSON字符串解析為其表示的原始對象的奇怪實例。

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.ArrayList;

public class Reader {
    public class Beta {
        String beta1;
        @Override
        public String toString() {
            return "{ beta1: " + this.beta1 + "}";
        }
    }
    public class Alpha {
        Beta beta;
        @Override
        public String toString() {
            return "{" + "beta: " + beta.toString() + "}";
        }
    }
    public static void main(String[] args) {
        Gson gson = new Gson();
        String example1 = "[[{beta:{beta1:beta2}}]]";
        String json = gson.toJson(example1);
        // this throws an error
        ArrayList<ArrayList<Alpha>> dog = gson.fromJson(json, new TypeToken<ArrayList<ArrayList<Alpha>>>(){}.getType());
        // this does not
        ArrayList<ArrayList<Alpha>> dog1 = gson.fromJson("[[{beta:{beta1:beta2}}]]", new TypeToken<ArrayList<ArrayList<Alpha>>>(){}.getType());
    }
}

如果[[{readerme:{dumbme:meme}}]]是適用於List<List<Alpha>>對象的正確格式的json,則序列化文字字符串[[{readerme:{dumbme:meme}}]] ,不會是。

使用字符串調用gson.ToJson將以json格式輸出字符串。 實際上,您的字符串[[{readerme:{dumbme:meme}}]]將變成"[[{readerme:{dumbme:meme}}]]" 請注意添加的引號。 我認為將json變量的內容打印到控制台將幫助您理解我的意思。

由於此輸出字符串是用json表示的字符串,因此它不再是List<List<Alpha>>的正確方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM