2014-02-13 40 views
2

我想在JSON文件中写入列表的值。但它是一个例外。net.sf.json.JSONException:在层次结构中有一个循环

JSONArray objJsonArray = null; 
FileWriter objJsonFileWriter = null; 
try { 
    objJsonArray = (JSONArray) JSONSerializer.toJSON(objList); //<- This line is giving net.sf.json.JSONException: There is a cycle in the hierarchy 
    objJsonFileWriter = new FileWriter("D:\\MyJson.json"); 
    objJsonFileWriter.write(objJsonArray.toString()); 
    objJsonFileWriter.flush(); 
    objJsonFileWriter.close(); 
} catch (JSONException jse) { 
    jse.printStackTrace(); 
} 

请让我知道如何摆脱这个例外。我正在做这项工作使用核心Java

+0

提供了objList中的示例数据 – Naren

+0

我将objList作为参数。它由来自数据库的多个值组成。好的给你。 – Brain

+2

你有一个参考周期。某些对象具有指向另一个对象的实例变量,该对象具有指向第一个对象的实例变量。可能是一个更长的链(a - > b - > c - > a等) – Kevin

回答

2

感谢@Kevin您的宝贵意见。

JSONArray objJsonArray = null; 
    FileWriter objJsonFileWriter = null; 
    PlayerMasterJsonInfoBean objBean = null; 

    try { 
     objList.setFirst_name(getPlayerMaster.getFirst_name()); //<- Get the value from bean class then add to collection class 
     objList.setLast_name(getPlayerMaster.getLast_name()); //<- Get the value from bean class then add to collection class 
     objJsonArray = (JSONArray) JSONSerializer.toJSON(objList); //<- Then pass object here 
     objJsonFileWriter = new FileWriter("D:\\MyJson.json"); 
     objJsonFileWriter.write(objJsonArray.toString()); 
     objJsonFileWriter.flush(); 
     objJsonFileWriter.close(); 
    } catch (JSONException jse) { 
     jse.printStackTrace(); 
    }