package weibo4j.model; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import weibo4j.Weibo; import weibo4j.http.Response; import weibo4j.org.json.JSONArray; import weibo4j.org.json.JSONException; import weibo4j.org.json.JSONObject; /** * @author sinaWeibo * */ public class Tag extends WeiboResponse { private static final long serialVersionUID = 2177657076940291492L; private String id; //标签id private String value; //标签value private String weight; public Tag(JSONObject json) throws WeiboException, JSONException { if (!json.getString("id").isEmpty()) { id = json.getString("id"); } if(!json.getString("value").isEmpty()) { value = json.getString("value"); }else { Iterator<String> keys = json.sortedKeys(); if (keys.hasNext()) { id = keys.next(); value = json.getString(id); } } weight= json.getString("weight"); } public Tag(JSONObject json , Weibo weibo) throws WeiboException,JSONException { System.out.println(json); id = json.getString("id"); value = json.getString("count"); weight= json.getString("weight"); } public static List<Tag> constructTags(Response res) throws WeiboException { try { JSONArray list = res.asJSONArray(); int size = list.length(); List<Tag> tags = new ArrayList<Tag>(size); for (int i = 0; i < size; i++) { tags.add(new Tag(list.getJSONObject(i))); } return tags; } catch (JSONException jsone) { throw new WeiboException(jsone); } catch (WeiboException te) { throw te; } } public static TagWapper constructTagWapper(Response res){ try { JSONArray tags = res.asJSONArray(); List<Tag> tagList = new ArrayList<Tag>(); for(int i=0;i<tags.getJSONObject(0).getJSONArray("tags").length();i++){ tagList.add(new Tag(tags.getJSONObject(0).getJSONArray("tags").getJSONObject(i))); } String id = tags.getJSONObject(0).getString("id"); return new TagWapper(tagList, id); } catch (JSONException e) { e.printStackTrace(); } catch (WeiboException e) { e.printStackTrace(); } return null; } public static List<FavoritesTag> constructTag(Response res) throws WeiboException { try { JSONArray list = res.asJSONObject().getJSONArray("tags"); int size = list.length(); List<FavoritesTag> tags = new ArrayList<FavoritesTag>(size); for (int i = 0; i < size; i++) { tags.add(new FavoritesTag(list.getJSONObject(i))); } return tags; } catch (JSONException jsone) { throw new WeiboException(jsone); } catch (WeiboException te) { throw te; } } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((value == null) ? 0 : value.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Tag other = (Tag) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; if (value == null) { if (other.value != null) return false; } else if (!value.equals(other.value)) return false; return true; } /** * @return the id */ public String getId() { return id; } public String getWeight() { return weight; } public void setWeight(String weight) { this.weight = weight; } public void setId(String id) { this.id = id; } public void setValue(String value) { this.value = value; } /** * @return the value */ public String getValue() { return value; } @Override public String toString() { return "Tag [id=" + id + ", value=" + value + ", weight=" + weight + "]"; } }