本文目錄一覽:
- 1、Android 中解析 JSON
- 2、Android 怎麼把list轉為json
- 3、android如何生成複雜的json
- 4、安卓Json –JSONArray –Map 類型轉換
- 5、android如何將list轉化為json
- 6、怎麼把list集合轉換成json
Android 中解析 JSON
JSON( JavaScript Object Notation ) 是一種輕量級的數據交換格式。易於閱讀和編寫,同時也易於機器解析和生成。
JSON 建構於兩種結構:
JSON 具有以下這些格式:
參考: Android 中 解析 JSON
Android 提供類四種不同的類來操作 JSON 數據。這些類是 JSONArray、JSONObject、JSONStringer 和 JSONTokenizer
為了解析 JSON 對象,須先創建一個 JSONObject 類的對象,需要傳入需解析的字元串 JSONObject root = new JSONObject(candyJson); 然後根據 JSONObject 對象提供方法以及數據類型解析對應 json 數據。下表展示一些 JSONObiect 提供的方法
示例:
Android 怎麼把list轉為json
Gson gson = new Gson();
MapString, Object map = gson.fromJson(result,
new TypeTokenMapString, Object() {
}.getType());
android如何生成複雜的json
只要你要生成的對象中,對象的成員變數和成員變數的成員變數等,都有對應它的Get方法,就能轉為JSON。
我前一陣在類里寫了個OnClickListener的成員變數,轉JSON後,怎麼都是空,現在想想,哎 好傻。
安卓Json –JSONArray –Map 類型轉換
1.JSONArray 轉 Map。先將JSAONArray 轉為 string類型的Json字元串,然後利用Gson將String類型的JSON字元串轉為對應的輸出類型。
2.JAVA中json轉Map,jsonArray轉List集合,List集合轉json
android如何將list轉化為json
可以通過jsonObject作為中間轉換橋樑,先把你的list轉換為jsonObject,然後jsonObject toString(),即可轉換為json字元串。但是過於複雜的map對象貌似不行,這樣你就只有自己寫了
怎麼把list集合轉換成json
1. 簡單的手動放置 鍵值對 到JSONObject,然後在put到JSONArray對象里
ListArticle al = articleMng.find(f);
System.out.println(al.size());
HttpServletResponse hsr = ServletActionContext.getResponse();
if(null == al){
return ;
}
for(Article a : al){
System.out.println(a.getId()+a.getDescription()+a.getTitle());
}
JSONArray json = new JSONArray();
for(Article a : al){
JSONObject jo = new JSONObject();
jo.put(“id”, a.getId());
jo.put(“title”, a.getTitle());
jo.put(“desc”, a.getDescription());
json.put(jo);
}
try {
System.out.println(json.toString());
hsr.setCharacterEncoding(“UTF-8”);
hsr.getWriter().write(json.toString());
} catch (IOException e) {
e.printStackTrace();
}
上述代碼JSONArray是引入的org.json.JSONArray包
而用net.sf.json包下JSONArray的靜態方法:fromObject(list) 這是網上大多是都是直接用此方法快捷轉換JSON,但是對於Hibernate級聯操作關聯的對象,這個方法就會報錯,如果將映射文件中的級聯配置去掉就行了。
另外對於list的要求就是其中的元素是字元串或對象,否則JSON不知道你想要的是什麼數據。
many-to-one name=”cmsent” column=”comment_tid” class=”com.fcms.cms.entity.CmsComment”
not-null=”false” cascade=”delete”
但是級聯操作畢竟還是得存在,否則以後數據冗餘、多餘。
解決方法就是:JSONArray subMsgs = JSONArray.fromObject(object, config);
JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter(new PropertyFilter() {
public boolean apply(Object arg0, String arg1, Object arg2) {
if (arg1.equals(“article”) ||arg1.equals(“fans”)) {
return true;
} else {
return false;
}
}
});
說明:提供了一個過濾作用,如果遇到關聯的對象時他會自動過濾掉,不去執行關聯關聯所關聯的對象。這裡我貼出我hibernate中的配置關係映射的代碼幫助理解:
!– 配置話題和團體之間的關係 —
many-to-one name=”article” class=”com.fcms.nubb.article” column=”article_id”/
!– 配置主題帖與回復的帖子之間的關係 —
set name=”subMessages” table=”sub_message” inverse=”true” cascade=”all” lazy=”false” order-by=”date asc”
key column=”theme_id” /
one-to-many class=”bbs.po.SubMessage” /
/set
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/185774.html