[["trainwishid":"45"],["trainwishid":"47"]]
外觀類 JSON 但**不合法**:頂層是數組,元素是類對象字面量但鍵無引號、冒號分隔,實為自定義格式。
String raw = "[[\"trainwishid\":\"45\"],[\"trainwishid\":\"47\"]]";
// 1. 去除首尾 [[ 和 ]]
String inner = raw.substring(2, raw.length() - 2);
// 內容: "trainwishid":"45"],["trainwishid":"47"
// 2. 分割元素
String[] elements = inner.split("\\],\\[");
// elements[0] = "\"trainwishid\":\"45\""
// elements[1] = "\"trainwishid\":\"47\""
// 3. 解析每個元素
List
Pattern p = Pattern.compile("\"([^\"]+)\"\\s*:\\s*\"([^\"]+)\"");
Matcher m = p.matcher(raw);
List
該格式極易因特殊字符、巢狀結構、轉義導致解析失敗。要求後端修改為標準 JSON:
// 正確 JSON
[
{"trainwishid": "45"},
{"trainwishid": "47"}
]
// 或
{"list": [{"trainwishid": "45"}, {"trainwishid": "47"}]}
JSON.parse / Gson.fromJson / Jackson 解析;public class LegacyDataAdapter {
public static List
**非標準格式用正則/替換分割勉強解析,但極其脆弱**。**第一優先級:推動後端輸出標準 JSON**。若不可改,封裝適配器並編寫完整單元測試,隔離解析邏輯,避免業務代碼耦合「屎山格式」。