簡體   English   中英

Gson 解析來自 json 字符串的正則表達式值

[英]Gson parse regex value from json string

我從消息隊列中收到以下字符串,沒有雙引號;

{
    tableName:STUDENT,
    columns: [{
        name: PARENT_PHONE,
        regex:{
            regexCode:PHONE,
            regexValue:[0-9\\-\\+]{9,15}
            }
        }]
}

這是我嘗試將其解析為 object 的字符串,如下所示;

TableDefinition tableDefinition = gson.fromJson(tableJson, TableDefinition.class);

當然它會拋出一個異常;

Expected a string but was "BEGIN_ARRAY" at line ...

我知道regexValue應該以有效字符而不是[開頭,然后我編寫了一個自定義反序列化程序來解析 regexValue 屬性。

現在拋出 MalformedJsonException 和調試斷點甚至在自定義反序列化器方法中都不會停止;

com.google.gson.stream.MalformedJsonException: Unterminated array at line 1 column 325 path $.columns[0].regex.regexValue[1]

正如異常向我們展示的那樣,Gson 仍然將 regexValue 識別為數組。

如何告訴 Gson regexValue 是一個字符串? 遇到這種情況怎么辦?

您不能將自定義解串器寫入格式錯誤的 JSON。如果格式錯誤,則它不再是 JSON,並且 Gson 無法對隨機字符串做出任何假設。 最好的辦法是修復發送到隊列的內容,如果那不可行,那么您將不得不修復當前格式錯誤但仍是字符串的 JSON。

暫無
暫無

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

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