我使用GSON庫以這種方式來解析消息:解析多種類型的JSON與GSON
Message m = new Gson().fromJson(message, Message.class);
現在我需要解析另一條帶一個完整的形式不同。消息是:
{foo: "aaa", bar: "bbb" }
,而新的格式是:
{tag1: "ccc", tag2: "ddd"}
我如何能夠區分兩種格式?
我使用GSON庫以這種方式來解析消息:解析多種類型的JSON與GSON
Message m = new Gson().fromJson(message, Message.class);
現在我需要解析另一條帶一個完整的形式不同。消息是:
{foo: "aaa", bar: "bbb" }
,而新的格式是:
{tag1: "ccc", tag2: "ddd"}
我如何能夠區分兩種格式?
創建一個帶有4個字段的Message
類:foo
,bar
,tag1
和tag2
。
如果foo
和bar
爲空,那麼您得到了第二種消息。如果tag1
和tag2
爲空,那麼你得到了第一種消息。
你在問什麼是GSon/Jackson不是這樣設計的。您正在使用ObjectMapping API,它允許您將json轉換爲預定義的類。
在您的例子的情況下:
Message m = new Gson().fromJson(message, Message.class);
Message
應該始終有映射操作String foo
和String bar
。
如果您知道只有兩個字符串值,但始終使用不同的字段,請將注意力放在Jackson Streaming API
上,並創建始終具有2個字符串值的通用靈活jsonParser。在解析時,您將手動將其設置爲適當的字段。
創建另一個類,該類與其他消息的結構相匹配。 –
當然可以,但我不知道我是在解析Message1還是Message2,所以如何決定是否需要Message1.class或Message2.class? – greywolf82
啊。如果它們完全不同,那麼你應該知道你在解析什麼,或者在某個地方存在設計問題。如果它們是同一事物的變體,則將tag1和tag2屬性添加到Message.java中,並且在分析的Message對象中缺少的字段將爲空。 –