package com.partynetwork.iparty.app.bean; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.codehaus.jackson.JsonFactory; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.JsonParser; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.JsonToken; import org.codehaus.jackson.map.ObjectMapper; import com.lidroid.xutils.util.LogUtils; import com.partynetwork.dataprovider.util.L; import com.partynetwork.dataprovider.util.StringUtil; import com.partynetwork.iparty.app.AppException; import com.partynetwork.iparty.info.IpartyInfo; public class IpartyList { private List<IpartyInfo> ipartyList = new ArrayList<IpartyInfo>(); public List<IpartyInfo> getIpartyList() { return ipartyList; } public void setIpartyList(List<IpartyInfo> ipartyList) { this.ipartyList = ipartyList; } public static IpartyList parse(InputStream stream) throws AppException { IpartyList ipartyList = new IpartyList(); ObjectMapper om = new ObjectMapper(); try { JsonNode rootNode = om.readTree(stream); int result = rootNode.path("result").getIntValue(); if (result == 0) { // 失败 String why = rootNode.path("description").getTextValue(); L.i("发送失败:" + why); throw AppException.fail(why); } else if (result == 1) { // 成功 JsonNode dataNode = rootNode.path("details"); JsonFactory f = new JsonFactory(); JsonParser jp = f.createJsonParser(dataNode.toString()); jp.nextToken(); while (jp.nextToken() == JsonToken.START_OBJECT) { IpartyInfo info = om.readValue(jp, IpartyInfo.class); ipartyList.getIpartyList().add(info); } return ipartyList; } else { throw AppException.fail("接口异常"); } } catch (JsonProcessingException e) { L.i("json转换失败"); throw AppException.json(e); } catch (IOException e) { throw AppException.io(e); } } }