Android에서 GSON을 사용하여 JSON 데이터를 구문 분석하는 방법: 오류 해결
Android에서 GSON을 사용하여 JSON 데이터를 구문 분석할 때 오류가 발생할 수 있습니다. : "java.lang.IllegalStateException: BEGIN_OBJECT가 필요했지만 라인 1 열 73에 NAME이 있었습니다." 이 오류는 JSON 데이터의 구문 문제, 특히 여는 중괄호가 누락되었음을 나타냅니다.
가능한 해결 방법
이 문제를 해결하려면 JSON 데이터가 올바른지 확인하세요. 형식이 지정되어 있으며 여는 중괄호와 닫는 중괄호를 모두 포함합니다. 예:
<code class="json">{ "count": "12", "colbreak": 1, ... "seek": 0 }</code>
일반적인 원인
이 오류의 일반적인 원인 중 하나는 파일에 저장되거나 서버에서 문자열로 다운로드되는 JSON 데이터를 수신하는 것입니다. . 이러한 경우 문자열이 제대로 인코딩되지 않거나 접두사가 붙지 않아 구문 분석 오류가 발생할 수 있습니다.
사용자 정의 클래스 수정
코드에서 Java를 사용하고 있습니다. JSON 데이터 구조를 나타내기 위해 사용자 정의 클래스인 GsonParse를 생성하는 리플렉션입니다. 이 접근 방식은 일반적으로 권장되지 않습니다. 대신 GsonParse의 각 필드에 대해 명시적인 getter 및 setter 메서드를 만듭니다. 또한 JSON 속성 이름과 일치하도록 클래스 및 필드 이름에 @SerializedName 주석을 추가합니다.
예:
<code class="java">public class GsonParse { @SerializedName("count") private String count; @SerializedName("colbreak") private String colbreak; @SerializedName("name") private String name; @SerializedName("score") private String score; @SerializedName("Words") private List<Words> mWords = new ArrayList<>(); @SerializedName("seek") private String seek; // Add getters and setters here... }</code>
UTF-8 인코딩
JSON 데이터가 UTF-8 형식으로 올바르게 인코딩되었는지 확인하세요. HTTP를 통해 JSON 데이터를 수신할 때 서버는 적절한 Content-Type 헤더(예: 'application/json; charset=utf-8')로 응답해야 합니다.
향상된 구문 분석 방법
다음은 리더를 사용하는 구문 분석 방법의 개선된 버전입니다.
<code class="java">public static <T> ArrayList<T> JsonParse(T t, Reader reader) { ArrayList<T> lcs = new ArrayList<>(); try { Gson gson = new Gson(); JsonReader jsonReader = new JsonReader(reader); jsonReader.beginObject(); while (jsonReader.hasNext()) { T cse = (T) gson.fromJson(jsonReader, t.getClass()); lcs.add(cse); } jsonReader.endObject(); jsonReader.close(); } catch (UnsupportedEncodingException | IOException e) { e.printStackTrace(); } return (ArrayList<T>) lcs; }</code>
사용
이 방법을 사용하려면 다음에서 리더를 생성하세요. 소스(예: 파일 또는 HTTP 응답)를 JsonParse 메서드에 전달합니다.
<code class="java">InputStream ims = assetManager.open("file.txt"); Reader reader = new InputStreamReader(ims, "UTF-8"); ArrayList<GsonParse> gsonObjects = JsonParse(new GsonParse(), reader);</code>
위 내용은 Android에서 GSON을 사용하여 JSON 데이터를 구문 분석할 때 'java.lang.IllegalStateException: Expected BEGIN_OBJECT but was NAME at line 1 columns 73' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!