[
{
countryCode: "CN",
countryCallingCode: "+86",
codeRule: "^1\d{10}$"
},
{
countryCode: "US",
countryCallingCode: "+1",
codeRule: "^\d{10}$"
}
]
Итак, я определяю модель следующим образом в Kotlin
data class CountryCallingCode(
val countryCode: String,
val countryCallingCode: String,
val codeRule: String? = null
)
Это то, что внутренний документ определяет ответ.
codeRule - это выражение регулярного выражения для подтверждения номера телефона.
Я застрял в преобразовании строки в список.
Я вставил их в Android Studio, и это показывает как:
String response = "[\n" +
" {\n" +
" countryCode: \"CN\",\n" +
" countryCallingCode: \"+86\",\n" +
//" codeRule: \"^1\\d{10}$\"\n" +
" },\n" +
" {\n" +
" countryCode: \"US\",\n" +
" countryCallingCode: \"+1\",\n" +
//" codeRule: \"^\\d{10}$\"\n" +
" }\n" +
"]";
Следующие коды не работают.
Преобразование кода 1:
Gson gson = new Gson()
CountryCallingCode[] countryCallingCodeList = gson.fromJson(response, CountryCallingCode[].class);
И я думаю, что следующие коды одинаковы, поправьте меня, если я ошибаюсь.
Преобразование кода 2:
ArrayList<CountryCallingCode> countryCallingCodeList = (ArrayList<CountryCallingCode>)gson.fromJson(response, ArrayList.class);
Преобразование кода 3
Gson gson = new Gson();
Type type = new TypeToken<List<CountryCallingCode>>() {
}.getType();
List<CountryCallingCode> countryCallingCodeList = gson.fromJson(response, type);
Затем я использую https://jsoneditoronline.org/, чтобы переформатировать мой JSON.
Я попытался удалить codeRule и вставил его в Android Studio, он также говорит мне, что я не прав, он показывает, что CountryCode вызывает SyntaxException.
String reponse = "[\n" +
" {\n" +
" countryCode: \"CN\",\n" +
" countryCallingCode: \"+86\"\n" +
" },\n" +
" {\n" +
" countryCode: \"US\",\n" +
" countryCallingCode: \"+1\"\n" +
" }\n" +
"]";
Только я сжимаю jsonstring в oneline, я могу преобразовать jsonstring в массив / ArrayList.
String response = "[{\"countryCode\":\"CN\",\"countryCallingCode\":\"+86\"},{\"countryCode\":\"US\",\"countryCallingCode\":\"+1\"}]";
Кто-нибудь знает
Как бороться с codeRule?
Почему я не смог вставить исходную JsonString в Android Studio?
Почему я должен сжимать JsonString в одну строку?
Обновлен:
Исходная строка json:
[{"countryCode":"CN","countryCallingCode":"+86", codeRule: "^1\d{10}$"},{"countryCode":"US","countryCallingCode":"+1", codeRule: "^\d{10}$"}]
Вставленный результат json string:
String response = "[{\"countryCode\":\"CN\",\"countryCallingCode\":\"+86\", codeRule: \"^1\\d{10}$\"},{\"countryCode\":\"US\",\"countryCallingCode\":\"+1\", codeRule: \"^\\d{10}$\"}]";
Код:
Gson gson = new Gson();
/* Convertion 1 */
CountryCallingCode[] countryCallingCodeList = gson.fromJson(response, CountryCallingCode[].class);
Ошибка:
result = {JsonSyntaxException@7237} Method threw 'com.google.gson.JsonSyntaxException' exception.
cause = {MalformedJsonException@7241} "com.google.gson.stream.MalformedJsonException: Invalid escape sequence at line 1 column 65 path $[0].codeRule"
detailMessage = "com.google.gson.stream.MalformedJsonException: Invalid escape sequence at line 1 column 65 path $[0].codeRule"
stackState = null
stackTrace = {StackTraceElement[28]@7243}
suppressedExceptions = {Collections$EmptyList@7244} size = 0
shadow$_klass_ = {Class@1694} "class com.google.gson.JsonSyntaxException"
shadow$_monitor_ = -2082115852