2012-08-09 2 views
5

편집 : 이전 버전에서는 사용할 수 없으므로 json 파일의 스타일을 간단하게 변경했습니다. 배열에있는 각 요소의 이름이 Target_Name의 값인 Java에서 대상 배열을 작성할 수 있어야합니다. 또한 다른 개체 이름을 가진 반복되는 대상 이름을 함께 병합 할 수 있어야합니다. 그래서 기본적으로 목표 배열이 필요하고 각 요소 내에 Type, Pin_number 및 capabilities를 보유하는 객체의 배열을 갖고 싶습니다.gson을 사용하여 json 파일을 구문 분석하는 데 도움이 필요합니다.

대상 목록 클래스를 만들고 대상 이름과 그 밖의 모든 것에 해당 변수 내에서 만들어야 할 수도 있습니다. 이전에 그런 식으로 시도했지만 어떻게 작동하는지 알아 내는데 어려움이있었습니다.

{ 
"Targets": [ 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    }, 
    { 
     "Target_Name": "----", 
     "Object_Name": "----", 
     "Type": "----", 
     "Pin_Number": "----", 
     "Capabilities": "----" 
    } 
] 

}

+1

무엇 따뜻한 환영을 개체 것입니다 @CodeDroid. 첫 번째 타이머가 아닌 사람들을 위해 절약 할 수 있습니까? –

답변

2

그것은 매우 정직하고, 다음로드하고 노드를 읽을 수있는 방법을 몇 가지 코드입니다. 데이터를 쿼리하는 방법을 찾는 데 도움이 될 것입니다.

Reader reader = null; 
InputStream stream = context.getResources() 
    .openRawResource(R.raw.json_file); 
reader = new BufferedReader(new InputStreamReader(stream), 8092); 

// parse json 
JsonParser parser = new JsonParser(); 
JsonObject jsonObj = (JsonObject)parser.parse(reader); 

// 당신의 JSON 구문 분석은 내 친구에 유래하는 값을 읽는 방법의

JsonArray targets= jsonObj.getAsJsonArray("Targets"); 

List<Target> targetList = new ArrayList<Target>(); 
for (JsonElement target: targets) { 

    JsonObject targetObject = target.getAsJsonObject(); 
    String targetName= targetObject.get("Target_Name").getAsString(); 
    ....//get the rest 

    // create target object 
    targetList.add(new Target(targetName, ....)); 
} 

// 예를 다음 쿼리처럼 보이도록

for (Entry<String, JsonElement> entry : rootElem.entrySet()) 
{ 
    int key = Integer.parseInt(entry.getKey()); 
    JsonObject jsonObject = entry.getValue().getAsJsonObject(); 
} 


// get integer element 
int key = Integer.parseInt(entry.getKey()); 

// get child object 
JsonObject jsonObject = entry.getValue().getAsJsonObject(); 

// get string element   
String title = jsonObject.get("Object_Name").getAsString(); 
+0

파일이 원시 리소스가 아닙니다. Google 클라우드에 대한 http 연결이 있고 json 파일에 대한 URL이 있습니다. 문제는이 파일을 파싱하고 나중에 사용할 수 있도록 해당 변수를 저장하는 것입니다. 내가 언급 한 다른 것들을 구현하려고 노력할 것이다. – zms6445

+0

@ user1586194 json 파일의 소스가 무엇인지는 중요하지 않습니다. 어디에서나 Reader 또는 단순히 String으로 읽은 다음 JsonParser.parse() 메소드에 부여하면됩니다. – Maxim

+0

JsonParser 및 JsonObject가 android SDK에 포함 된 json 클래스에 속하지 않습니까? gson에는 이에 상응하는 것이 있습니까? – zms6445

관련 문제