JavaWeb:jsonデータを返すときのループ解析問題

1234 ワード

以下のコードはJsonの変換ツールを使用してList----->Json形式の
		  	List list = dao.findCity(pid);
			//list--json
			/*JSONObject--->{name:zhangsan,age=12}
			JSONArray --->  [{},{}]*/
			JSONArray jsonArray = JSONArray.fromObject(list);
			String string = jsonArray.toString();
			System.out.println(string);
しかし、次の例では、ループ変換のエラーが発生します.
OrderとOrderItemは2つのBeanです.1つのOrderには複数のOrderItemがあり、1つのOrderItemには1つのOrder---->複数対1の関係があります.
Orderには属性リストorderitemsがあり、OrerItemクラスにはprivate Order属性があります.
JSOnArray解析ではオブジェクトを最小粒度まで解析し続けるため,1つのOrder解析ではリストに解析してOrderItem解析し,OrderItemにはorder属性があるため,Order解析を継続している.
このとき,ループ解析の問題が発生する.
次の解決策は、OrderItemのorderプロパティを無視する解析を設定します.
            Order order = orderServiceImpl.findOderByOid(oid);
			// json  
			JsonConfig jsonConfig = new JsonConfig();  //      
			jsonConfig.setIgnoreDefaultExcludes(false);  //      
		    jsonConfig.setExcludes(new String[]{"order"});   
            // Orderitem      order  ,      
			String json = JSONArray.fromObject(order.getList(),jsonConfig).toString();
			resp.setContentType("application/json;charset=utf-8");
			resp.getWriter().println(json);
以上はJson循環解析問題を完璧に解決した.