2014-11-22 2 views
10

json 파일을 ArrayList로 읽는 데 도움이 필요합니다. 나는이 ArrayList를 채울 필요가LibGDX : json 파일에서 ArrayList로 읽기

public class Data { 

    public static ArrayList<Tile> tilesData; 

    public static void loadData() { 
     tilesData = new ArrayList<Tile>(); 
     Json json = new Json(); 
     json.fromJson(Tile.class, Gdx.files.internal("data/tiles.json")); 
    } 

} 

: 나는 수업이

[ 
    { 
     "name": "Wall", 
     "symbol": "#",  
    }, 
    { 
     "name": "Floor", 
     "symbol": ".", 
    } 
] 

:

public class Tile { 

    public String name; 
    public String symbol; 

} 

을 내가 ArrayList를 가진 다른 클래스가

내가 JSON 파일이 데이터를 json 파일에서 가져 왔지만 몇 가지 문제가 있습니다. 나는이 줄을 짐작한다.

json.fromJson(Tile.class, Gdx.files.internal("data/tiles.json")); 

틀리다.

는 나는 내가 JSON 파일에 대한 libgdx 문서를 읽고

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error reading file: data/tiles.json 

Caused by: com.badlogic.gdx.utils.SerializationException: Unable to convert value to required type: [ 
{ 
    name: Wall, 
    symbol: # 
}, 
{ 
    name: Floor, 
    symbol: . 
} 

가 실행하려고 할 때,하지만 난 그게 명확하지 ... 내가 배열을 채우는 방법을 이해하지 않습니다 발견했다. 이 사건을 도와주세요!

+0

는 "몇 가지 문제가"무엇을 의미합니까를? 컴파일 또는 런타임 오류? 게시 할 수 있습니까? – NiziL

+0

내 게시물을 수정했습니다. 아시다시피 json 파일을 구문 분석하는 데 실수가 있습니다. – Pasha

답변

7

json 파일에 ArrayList<Tile>이 저장되어 있으며이 파일을 Tile으로 읽으려고합니다.

두 가지 방법으로이를 수정할 수 있습니다.

1) 다른 클래스의 타일 컬렉션을 캡슐화하여 직렬화를 단순화 할 수 있습니다.

2) ArrayList으로 읽고 나중에 유형을 변환하십시오.

ArrayList<JsonValue> list = json.fromJson(ArrayList.class, 
              Gdx.files.internal("data/tiles.json")); 
for (JsonValue v : list) { 
    tilesData.add(json.readValue(Tile.class, v)); 
} 

희망이 있습니다.

+0

이 유형 변환 방법에 대해 자세히 알려주십시오. 답변 주셔서 감사합니다! – Pasha

+0

답변을 업데이트했습니다. 그것을 확인하시기 바랍니다. –

+0

대단히 감사합니다. – Pasha

7

Tanmay 파틸에서 대답이 옳다 그러나 당신이 가진 루프 저장할 수 있습니다

ArrayList<Tile> board = json.fromJson(ArrayList.class, Tile.class, Gdx.files.internal("data/tiles.json")); 
+0

고마워요, 매우 유용합니다. 덧붙여서 – Pasha

+0

거룩한 쓰레기. 나는 원래의 JSON 로딩 코드를 10 줄에서 1 줄로 줄였다. LibGDX는 꽤 멋지다. – NielW

+0

방금이 게시물을 보았습니다.이 질문은 다소 제 질문과 관련이 있습니다. json 파일을 읽는 대신 json 문자열 (원래 질문에 게시 됨)을 파일에 쓸 수 있습니까? 클래스 정보도 serialize 된 json 파일에 인쇄되는 것을 볼 수 있습니다. 내 질문 링크 : http://gamedev.stackexchange.com/questions/125307/unable-to-remove-class-information-in-serialized-json-file-using-libgdx – user2582651

관련 문제