`
tokyo2006
  • 浏览: 30888 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

自身一对多关联模型的JSON转换

    博客分类:
  • Java
阅读更多
       最近又遇到了一个问题, 这里有一个一对多自身关联的模型
 1Class Tree
 2{
 3   private String id;
 4   private String name;
 5   private Set<tree> children = new HashSet<Tree>();
 6   public void setId(String id)
 7   {
 8         this.id = id;
 9   }

10   public String getId()
11   {
12         return this.id;
13   }

14    
15}
然后我用JSON把这个模型转换成string的时候会报错:will throw a JSONException if a cycle is found.后来去查了下JSON的API发现是我的JSON转换策略有问题。原文是这样的:
public abstract class CycleDetectionStrategy
extends Object

Base class for cycle detection in a hierarchy.
The JSON spec forbides cycles in a hierarchy and most parsers will raise and error when a cycle is detected. This class defines a contract for handling those cycles and two base implementations:

  • STRICT - will throw a JSONException if a cycle is found.
  • LENIENT - will return an empty array or null object if a cycle is found.

说的很清楚了所以必须做点修改像这样:
 1public class TreeAction extends BaseActionSupport{
 2    private static final CycleDetectionStrategy CycleDetectionStrategy = null;
 3    public String getAllTree()
 4    {
 5        JsonConfig jsonConfig=new JsonConfig();
 6        jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
 7        tree = regionService.getTreeChildren("402881821a7fbf10011a7fc2d3ae0001");
 8        JSONObject array = JSONObject.fromObject(tree,jsonConfig);
 9        System.out.println("$$$$$$$$$$"+array.toString()+"$$$$$$$$$$$$$$");
10        return SUCCESS;
11    }

12}

这样修改以后转换就正常啦~~~。呵呵,HIBERNATE还有好多问题我没解决烦恼中。。。。。。
分享到:
评论
1 楼 Lyishuai 2010-05-18  
我也遇到这个问题了!支持一下。

相关推荐

    django-entangled:使用标准Django表单编辑JSON模型字段

    django纠缠使用标准Django表单编辑JSON模型字段。... 通过使用django-entangled ,可以使用Django ModelForm ,并将该表单字段的全部或子集存储在关联模型内部的一个或多个JSON字段中。安装只需安装此Dj

    ThinkPHP v5.0.0 RC4.zip

    增加远程一对多关联 [其它] 日志存储结构调整 Trace调试功能从日志类独立并增强 原Input类功能并入Request类 类库映射文件采用命令行生成 包含应用类库 验证类的check方法data数据取消引用传参 路由增加MISS...

    ThinkPHP 3.1.2 - PHP的开发框架MVC - 含Core,Extend,Example

    支持关联操作的关联模型;支持Mongo数据库的Mongo模 型等等,都可以方便的使用。 模块分组:不用担心大项目的分工协调和部署问题,分组帮你解决跨项目的难题, 还可以支持对分组的二级域名部署支持。 模板引擎:...

    python入门到高级全栈工程师培训 第3期 附课件代码

    04 ORM多表操作之一对多查询之双下划线查询 05 ORM多表操作之多对多添加记录 06 ORM多表操作之多对多查询 07 ORM多表操作之F查询与Q查询 08 ORM的querySet集合对象的特性 第53章 01 admin介绍 02 alex首秀失败 03 ...

    精易官方免费模块v3.60版

    因为原命令调用特定的dll,只对win7以上系统有效,并会附加一个特殊功能支持支持库 8.重写“音量_静音” 增加“音量_增加”“音量_减少”,对声卡操作,XP,WIN系列均有效 精易模块 V3.54 what’s new:(20131221...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    12.2.4 使文件对多用户安全 12.2.5 压缩 12.3 序列化 12.4 总结 第13章 LINQ 13.1 LINQ基础 13.1.1 延迟执行 13.1.2 LINQ是如何工作的 13.1.3 LINQ表达式 13.1.4 揭秘LINQ表达式 13.2 LINQ to...

    精易模块[源码] V5.15

    14、改善“程序_禁止重复运行”当标识为空时,默认为自身路径,代码由易友【@wjt741106】提供。 15、改善“普通填表类-就绪判断_源码关键字”添加区分大小写参数。 MD5: 3C01272B9E2DAFDEF08D20C191E3C265 精易模块...

    ASP.NET4高级程序设计(第4版) 3/3

    12.2.4 使文件对多用户安全 419 12.2.5 压缩 423 12.3 序列化 423 12.4 总结 426 第13章 LINQ 427 13.1 LINQ基础 427 13.1.1 延迟执行 429 13.1.2 LINQ是如何工作的 429 13.1.3 LINQ表达式 430 ...

    ZendFramework中文文档

    JSON 7.8.4.6. 转向器(Redirector) 7.8.4.6.1. 介绍 7.8.4.6.2. 基础用例 7.8.4.7. ViewRenderer 7.8.4.7.1. 介绍 7.8.4.7.2. API 7.8.4.7.3. 基础用法示例 7.8.4.7.4. 高级用法示例 7.8.5. 编写自己的...

Global site tag (gtag.js) - Google Analytics