`
tokyo2006
  • 浏览: 32452 次
  • 性别: 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  
我也遇到这个问题了!支持一下。

相关推荐

    json api json帮助文档

    属性是资源的特性,如用户名、电子邮件等,而关系描述了资源与其他资源之间的关联,可能是“一对一”、“一对多”或“多对多”。 JSON API要求在HTTP请求中使用特定的HTTP方法(GET、POST、PATCH、DELETE)来操作...

    swift-CaesarParser是一个Swift编写的简单JSON模型解析器

    Swift-CaesarParser是一个专为Swift开发者设计的轻量级JSON模型解析库,它旨在简化JSON数据转换为Swift对象的过程。在iOS、macOS、watchOS或tvOS应用开发中,JSON作为网络通信中常见的数据交换格式,经常需要被解析...

    知识图谱导出JSON可视化

    总的来说,“知识图谱导出JSON可视化”涵盖了数据结构、数据交换格式、前端开发技术以及可视化设计等多个方面的知识,是IT行业中一项综合性的实践任务。通过掌握这些技能,开发者能够构建出直观、互动的知识图谱展示...

    Python-使用简单方便的模型转字典模块Python3

    在SQLAlchemy中,如果模型之间存在一对多或多对多的关系,转换时会自动处理这些关联关系。这意味着即使模型间有复杂的关联,也能被正确地转化为嵌套的字典结构,无需开发者显式处理。 此外,该模块还支持不需要显示...

    Json2DataSet

    3. DataSet:DataSet是ADO.NET中的一个核心组件,它可以视为内存中的数据库,可以存储多表数据,支持JOIN操作,以及对数据的增删改查。DataSet不直接连接数据库,而是通过DataAdapter从数据库中填充数据。 4. JSON...

    Python库 | django_json_api_model-0.0.5-py3-none-any.whl

    3. 关联关系处理:对于具有多对一、一对多或多对多关系的模型,库可以优雅地处理这些关联,使得在API接口中可以方便地获取和更新关联数据。 4. 遵循JSON API标准:`django_json_api_model`遵循JSON API 1.0规范,...

    PyPI 官网下载 | SQLAlchemy-JSON-API-0.4.7.tar.gz

    3. **关联处理**:支持处理数据库模型之间的关联,比如一对一、一对多、多对多关系,能够正确序列化嵌套的关联数据。 4. **分页支持**:提供了处理分页请求的能力,使 API 能够返回分页结果。 5. **错误处理**:当...

    jsonapi-formatter-源码.rar

    关系可以是一对一、一对多或多对多。在JSONAPI中,关系通过`relationships`对象表示。 - **嵌套数据(Inclusion)**:为了减少HTTP请求的数量,JSONAPI允许在单个响应中包含相关资源的数据。 - **错误处理(Errors...

    关于json的一些教程

    - **3.1 JSON官方网站提供的一个开源的JSON解析器和字符串转换器:json.js** json.js 是一个用于处理JSON数据的强大工具。它可以解析JSON字符串并将其转换为JavaScript对象,也可以将JavaScript对象序列化为JSON...

    Ruby-Jbuilder通过一个构建式DSL创建JSON结构

    在这个例子中,`json.`是Jbuilder DSL的起始关键字,后面的每个方法调用都会在JSON对象中添加一个键值对。`@user`是Ruby中的实例变量,它包含了User模型的数据。 Jbuilder也支持嵌套结构,这对于表示层级关系的数据...

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

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

    JavaScript中的简单轻量级和可定制的Laravel模型

    5. 处理关联:获取或设置关联模型,处理复杂的一对多、多对一或多对多关系。 6. 保存和更新:创建新记录或更新现有记录,自动处理数据验证和序列化。 通过这种方式,开发者可以在JavaScript项目中实现与Laravel后端...

    parser:使用 nodejs 解析 html 并转换 json

    5. **Mongoose**: 是MongoDB的Node.js驱动程序,提供了一个强大的对象数据模型(ODM),简化了与MongoDB的交互,包括定义模式、验证数据、建立关联等。 6. **数据抓取(Scraping)**: 这个过程包括从网页中提取所需...

    Laravel开发-json-serializer-laravel

    `toArray`将模型及其关联关系转换为数组,而`toJson`则直接将其转换为JSON字符串。 2. **自定义序列化**: 在某些情况下,我们可能需要对序列化的数据进行自定义,比如隐藏某些字段、添加额外信息或改变字段名称。...

    Python库 | marshmallow_jsonapi-0.23.0-py2.py3-none-any.whl

    资源关系可以是一对一、一对多或多对多的。marshmallow_jsonapi提供了处理这些关系的方法,使得在序列化和反序列化过程中能正确处理关联资源。 此外,JSON API规范还规定了错误对象的结构,以便在响应中清晰地报告...

    Ruby-FastJSONAPI一个用于Ruby对象的快速JSONAPI的序列化器

    5. **支持关联**:Fast JSON API能够处理复杂的对象关联,包括单个和多个关联,以及嵌套的关联结构,同时支持包括“include”参数来决定哪些关联应该被包含在响应中。 **使用方法** 要在项目中使用Fast JSON API,...

    NewtonJson源码

    在.NET框架中,可以使用内置的System.Text.Json类库来处理JSON,但Newtonsoft.Json提供更多的特性和灵活性,比如支持LINQ操作,自定义类型转换,以及更丰富的序列化选项。 进入Newtonsoft.Json的源码,我们可以看到...

    腾讯 APIJSON 6.1.0+ 的 Cassandra 数据库插件,可通过 Maven, Gradle 等远程依赖

    3. **灵活的数据模型**:Cassandra 支持宽列(Wide Row)模型,适合存储时间序列数据或具有多个相关属性的实体,与 APIJSON 的 JSON 格式天然匹配。 4. **分布式架构**:Cassandra 的分布式架构可以轻松应对数据量...

    Laravel开发-relaquent

    - **一对多(One-to-Many)**:一个模型可以拥有多个相关模型实例。 - **多对一(Many-to-One)**:多个模型实例可以属于一个模型。 - **多对多(Many-to-Many)**:通过中间表连接两个模型,形成多对多关系。 - **...

    Mac汇率转换器

    在IT行业中,Mac平台的应用开发是一项重要的技能,尤其是在金融领域,设计一款优秀的汇率转换器能够帮助用户方便快捷地进行货币间的换算。本项目“Mac汇率转换器”就是基于这样的需求,采用Cocoa框架和Objective-...

Global site tag (gtag.js) - Google Analytics