0 0

用JSON过滤对象中属性名相同时都会被过滤的情况,怎么解决10

 

 

   我有一个需求:

                    class  A {

                            private String a;

                            private B b;

                            //set/get方法省略

                     }

                    class  B {

                            private String a;

 

                            //set/get方法省略

                     }

              

                 //过滤不需要解析的属性

                JsonConfig config = new JsonConfig();

 A target = new A();

config.setExcludes(new String[]{"a"});

JSONObject jsonObject = JSONObject.fromObject(target, config);

String out = jsonObject.toString();

                 这样后A类中过滤了a属性,同时对象b中的属性a也会被过滤掉,如果我只想过滤A类中的属性a,不想过来属性b对象中的属性a,要怎么写。关键就是这里属性名重了

 

2014年5月19日 17:10

5个答案 按时间排序 按投票排序

0 0

采纳的答案

如果要采纳请采纳xiaoyu1985ban



JsonConfig config = new JsonConfig();
   B b=new B();
   b.setA("a");
   A target = new A();
  
   target.setA("a");
   target.setB(b);

   config.setJsonPropertyFilter( new PropertyFilter(){ 

   public boolean apply(Object source/* 属性的拥有者 */, String name /*属性名字*/, Object value/* 属性值 */ ){ 
   // return true to skip name 
   return source instanceof A&& name.equals("a"); 
   } 
   }); 

  JSONObject jsonObject = JSONObject.fromObject(target, config);

  String out = jsonObject.toString();

          System.out.println(out);

2014年5月20日 02:23
1 0

先不过滤,获取jsonObject后调用jsonObject.remove("a");删除这个属性

2014年5月19日 18:11
0 0

题主,可以试试PropertyFilter,

//创建A对象
		A target = new A();
		target.setA("a");
	    B b = new B();
	    b.setA("b.a");
	    target.setB(b);
	    JsonConfig config = new JsonConfig();
	    //配置Filter
	    config.setJsonPropertyFilter(new PropertyFilter() {
			
			@Override
			public boolean apply(Object source, String name , Object value) {				
				//过滤条件:返回true时,过滤生效
				return source instanceof A && name.equals("a");  
			}
		});

		JSON json = JSONSerializer.toJSON( target, config );

		String out = json.toString();
		System.out.println(out); // {"b":{"a":"b.a"}}
		//不过滤的结果:{"a":"a","b":{"a":"b.a"}}

2014年5月19日 21:30
0 0

解析成的json应该是

{"a":"","b":{a:""}}


这个没必要过滤吧

2014年5月19日 20:56
0 0

你这样过滤, 对于json来说,他分不清你传来的是a还是b, 或者c对象等
他只是对你传来的任何一个对象只要有a属性, 他就过滤

2014年5月19日 17:37

相关推荐

    比较json对象中的两个数组含有的相同元素,点击按钮输出新的数组

    当你需要比较两个JSON对象中的数组并找出它们共有的元素时,可以采用几种不同的方法。在这个场景下,我们将探讨如何实现这个功能,并点击一个按钮后,将新数组的结果输出。这涉及到JavaScript的数据操作、数组遍历...

    javascript遍历json对象的key和任意js对象属性实例.docx

    当需要处理JSON格式的数据时,可以使用相同的`Object.keys()`方法来获取所有的键名。 ##### 示例3:遍历JSON对象的键 ```javascript var an_obj = {100: 'a', 2: 'b', 7: 'c', "name": "wu", "interesting": "Game...

    Json 2.0序列化

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。随着技术的发展,JSON格式也进行了更新,虽然在实际应用中"JSON 2.0"这一术语并不常见,通常我们谈论的是JSON...

    json使用大全json使用大全json使用大全json使用大全json使用大全json使用大全json使用大全json使用大全

    在序列化过程中,这些非JSON支持的属性会被忽略或者转换为字符串。 4. 在实际开发中的应用 - API交互:Web应用通过HTTP请求从服务器获取或发送JSON数据。 - 存储数据:浏览器的localStorage和sessionStorage支持...

    把扁平化的数据转换成树形结构的JSON,把树形JSON扁平化.zip

    在JSON中,树形结构可以用键值对表示,其中键代表节点的属性,值可以是字符串、数字、对象或其他JSON数据类型。对于子节点,值通常是一个包含其他键值对的对象数组。 2. **将树形JSON扁平化** 扁平化树形JSON通常...

    json_lib所需要的包

    在Java环境中,我们通常会使用JSON库来处理JSON格式的数据,如将Java对象转换为JSON字符串或将JSON字符串解析为Java对象。在这个场景中,“json_lib所需要的包”是指一组用于支持JSON操作的Java库。 `json-lib`是...

    Node.js-jq.node-强大的命令行JSON处理器

    上述命令会输出JSON对象中的`age`属性值,即`30`。 **学习资源** 为了熟练掌握`jq.node`,你可以参考以下资源: 1. 官方文档:了解详细的命令行选项和表达式语法。 2. `jq`指南:虽然`jq.node`和`jq`在语法上大体...

    net.sf.json.JSONObject 为null 的判断方法

    对象是否为`null`,以及在实际应用中遇到此类问题时的解决策略。 首先,`net.sf.json.JSONObject`是Apache软件基金会的开源项目`json-lib`的一部分。这个库提供了多种JSON相关的操作方法,包括将JSON字符串转换为...

    Java的Struts2框架配合Ext JS处理JSON数据的使用示例

    当需要在Action中返回JSON数据时,可以通过继承ActionSupport类,并使用其JSON方法来生成JSON格式的数据。 配置Struts2时,需要在struts.xml中定义Action的配置,包括Action的name属性、class属性(对应的Action类...

    js操作两个json数组合并、去重,以及删除某一项元素

    在JavaScript中,处理JSON数组是常见的任务,特别是当涉及到数据整合、数据清洗以及根据特定条件过滤数据时。本文将详细介绍如何使用JavaScript操作两个JSON数组进行合并、去重以及删除某一项元素。 首先,我们来看...

    JavaScript实用代码小技巧

    配合块级作用域,我们可以在不同的作用域内使用相同的变量名,而在ES5及之前版本的JavaScript中,这可能会引起命名冲突。例如: ```javascript if (true) { let a = 'local variable'; console.log(a); // 输出 '...

    详解Angular的内置过滤器和自定义过滤器【推荐】

    `json`过滤器将对象或数组转换为格式化的JSON字符串,这在调试时非常有用。通常与`<pre>`标签一起使用,因为`<pre>`可以保留原始的换行和空格。 5. **截取过滤器(limitTo)** `limitTo`过滤器用于截取字符串或...

    Vue0.1的过滤代码如何添加到Vue2.0直接使用

    // JSON过滤器 Vue.filter('json', { read: function (value, indent) { return typeof value === 'string' ? value : JSON.stringify(value, null, Number(indent) || 2); }, write: function (value) { try {...

    JavaScript之json_动力节点Java学院整理

    它的设计灵感来源于JavaScript,因此,JSON格式与JavaScript的对象表示法极其相似,但并非完全相同。JSON的主要优点在于其简洁性和易于阅读,使得它在Web开发中广泛用于数据传输。 在JSON中,数据结构主要由以下几...

    002-CTF web题理论基础篇-第二课理论基础.pdf

    例如,利用JSON对象的属性顺序,或者通过特殊字符如`\u0000`来绕过过滤。 7. `array_search`和`is_array`绕过: 这两个函数在检查数组元素时,如果处理不当,可能导致逻辑漏洞。攻击者可能会构造特殊的数组或值来...

    any_hash.cr:更好的JSON :: Any for Crystal

    在Crystal编程语言中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,它被广泛用于Web服务和API之间传输数据。然而,Crystal的标准库中,`JSON::Any`类在处理JSON时有时可能会显得不够灵活。`any_...

    aspnet web api 超实用案例

     1、先进的 HTTP 编程模型: 使用新的强类型的 HTTP 对象模型直接操作 HTTP 请求和响应, 在 HTTP客户端使用相同的编程模型和 HTTP 管道;  2、支持路由: Web API 完整支持 ASP.NET 路由, 包括路由参数和约束。 ...

    jQuery权威指南-源代码

    2.2.8 表单对象属性过滤选择器/32 2.2.9 表单选择器/34 2.3 综合案例分析—导航条在项目中的应用/37 2.3.1 需求分析/37 2.3.2 效果界面/38 2.3.3 功能实现/38 2.3.4 代码分析/40 2.4 本章小结/41 第3章 ...

    jQuery权威指南366页完整版pdf和源码打包

    2.2.5 可见性过滤选择器 2.2.6 属性过滤选择器 2.2.7 子元素过滤选择器 2.2.8 表单对象属性过滤选择器 2.2.9 表单选择器 2.3 综合案例分析—导航条在项目中的应用 2.3.1 需求分析 2.3.2 效果界面 ...

    js代码-获取对象数组的一个key

    在JavaScript中,获取对象数组中的一个特定key是一项常见的任务,特别是在处理JSON数据或者进行数据分析时。这个场景通常涉及到数组操作和对象属性访问。下面我们将详细探讨如何实现这一目标,并通过实例来加深理解...

Global site tag (gtag.js) - Google Analytics