java封装对象数组_java解析JSON对象和封装对象的示例

在本例中java解析JSON对象使用的是org.json,因此,如果各位想测试我的代码,请先确保有java.json.jar包,否则,就需要去网上下载这个jar包,然后才可以正常使用本代码。

本例的功能就是对两个json对象,将一个json对象合并到另一个json对象中。注意,这两个json对象中的key是相同的。

其中,被追加的json对象如下:

{

"className": "User",

"condition": [

{

"pro": "frontNum",

"connector": "in",

"values": [

"1",

"2",

"3",

"4"

]

},

{

"pro": "sex",

"connector": "!=",

"values": [

"男",

"女"

]

}

]

}

要合并到上面的json对象中的json为:

[

{

"pro": "frontNum",

"connector": "in",

"values": [

"1",

"2"

]

},

{

"pro": "sex",

"connector": "!=",

"values": [

"人妖"

]

},

{

"pro": "name",

"connector": "!=",

"values": [

"曹操",

"刘备",

"章鱼",

"张飞",

"马超",

"孙武"

]

},

{

"pro": "home",

"connector": "!=",

"values": [

"山东",

"北京",

"河北",

"安徽",

"广东",

"福建"

]

}

]

注意,上述两个json字符串仅用于朋友们便于查看它们的结构,测试代码时不需要拷贝上面的代码。

下面是处理上述实现要求的代码。

package view;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

public class TestUtil {

public static void main(String[] args) throws JSONException {

String endString = "{\"className\": \"User\",\"condition\": [{\"pro\": \"frontNum\",\"connector\": \"in\",\"values\": [\"1\",\"2\",\"3\",\"4\"]},{\"pro\": \"sex\",\"connector\": \"!=\",\"values\": [\"男\",\"女\"]}]}";

JSONObject jsonObject = new JSONObject(endString);

String comString = "[{\"pro\": \"frontNum\",\"connector\": \"in\",\"values\": [\"1\",\"2\"]},{\"pro\": \"sex\",\"connector\": \"!=\",\"values\": [\"人妖\"]},{\"pro\": \"name\",\"connector\": \"!=\",\"values\": [\"曹操\",\"刘备\",\"章鱼\",\"张飞\",\"马超\",\"孙武\"]},{\"pro\": \"home\",\"connector\": \"!=\",\"values\": [\"山东\",\"北京\",\"河北\",\"安徽\",\"广东\",\"福建\"]}]";

JSONArray jsonArray = new JSONArray(comString);

JSONArray jsonArray2 = jsonObject.getJSONArray("condition");

for (int i = 0; i 

JSONObject jsonObject2 = jsonArray.getJSONObject(i);

jsonArray2 = updateCondition(jsonArray2, jsonObject2);

}

System.out.println(jsonArray2.toString());

}

/**

* 在类名已经匹配完成的前提下,将从规则类中 取到一个包含列明,连接符,值的对象追加进入JSONarray

*

* @param jsonArray

*            某个类名下的condition中的数组,被追加的约束的对象

* @param comOb

*            要追加的对象

* @return

* @throws JSONException

*/

public static JSONArray updateCondition(JSONArray jsonArray,

JSONObject comOb) throws JSONException {

JSONArray endJsonArray = new JSONArray();

String comPro1 = comOb.getString("pro");

String comConn1 = comOb.getString("connector");

boolean flag = true;

for (int i = 0; i 

JSONObject enJsOb1 = jsonArray.getJSONObject(i);

String enPro1 = enJsOb1.getString("pro");

String enConn1 = enJsOb1.getString("connector");

// 属性名和连接符都相同,则在这个json中添加进来

if (enPro1.trim().equals(comPro1.trim())

&& enConn1.trim().equals(comConn1.trim())) {

flag = false;

JSONArray comJsAr1 = comOb.getJSONArray("values");

for (int m = 0; m 

String comVal = comJsAr1.getString(m);

JSONArray enJsAr1 = enJsOb1.getJSONArray("values");

JSONArray tempJsonArray = comPareVal(comVal, enJsAr1);

enJsOb1.put("values", tempJsonArray);

}

endJsonArray.put(enJsOb1);

continue;

}

endJsonArray.put(jsonArray.get(i));

}

if (true == flag) {

endJsonArray.put(comOb);

}

return endJsonArray;

}

/**

* 将一个值追加进一个json数组中,并判断数组中 是否已经存在这个值,如果存在,则不追加

*

* @param comVal

*            要追加的值

* @param enJsonArray

*            被追加的数组

* @return 追加完成后的jso数组

* @throws JSONException

*/

public static JSONArray comPareVal(String comVal, JSONArray enJsonArray)

throws JSONException {

boolean flag = true;

for (int i = 0; i 

String enVal = enJsonArray.getString(i);

if (!comVal.trim().equals(enVal.trim())) {

flag = false;

} else {

flag = true;

break;

}

}

if (true == flag) {

return enJsonArray;

} else {

enJsonArray.put(comVal);

return enJsonArray;

}

}

}

经过上述的代码,我们就可以将这两个json对象合并为同一个对象,

{

"condition": [

{

"values": [

"1",

"2",

"3",

"4"

],

"pro": "frontNum",

"connector": "in"

},

{

"values": [

"男",

"女",

"人妖"

],

"pro": "sex",

"connector": "!="

},

{

"values": [

"曹操",

"刘备",

"章鱼",

"张飞",

"马超",

"孙武"

],

"pro": "name",

"connector": "!="

},

{

"values": [

"山东",

"北京",

"河北",

"安徽",

"广东",

"福建"

],

"pro": "home",

"connector": "!="

}

],

"className": "User"

}

OK,完美实现合并JSON对象的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python xgboost用法_XGBoost使用教程(纯xgboost方法)一

一、导入必要的工具包# 导入必要的工具包import xgboost as xgb# 计算分类正确率from sklearn.metrics import accuracy_score二、数据读取XGBoost可以加载libsvm格式的文本数据,libsvm的文件格式(稀疏特征)如下:1 101:1.2 102:0.030 1:2.1 10001:300 …

ul 原点显示_CSS+HTML ul li列表原点如何相连

方案一:html参与考试《第一期模拟考试》3小时50分钟学习文档《LDO电路设计规范》3小时50分钟学习文档《LDO电路设计规范》3小时50分钟Css:*{margin:0;padding:0;}ul{margin:100px;padding:0;list-style: none;}ul li{position:relative;padding-left: 30px;padding-bottom: 20p…

java并发执行一个方法_JAVA的执行并发原理

VolatileVolatile关键字用于确保共享数据的可见性与有序性,但是并不能保证方法的原子性,在程序中对Volatile关键字使用得当的话,它比synchronized的使用和执行成本会更低,因为他不会引起线程的上下文切换和调度。先讲一下重排序&a…

java欧洲_java欧洲/明斯克时区问题

我写了以下程序:import sun.security.action.GetPropertyAction;import java.security.AccessController;import java.text.SimpleDateFormat;import java.util.Date;import java.util.TimeZone;public class Main {public static void main(String[] args) {System…

java.util. 什么意思_java.util中,util是什么意义

展开全部1. util包的框架常用的集合类主要636f70793231313335323631343130323136353331333431343630实现两个“super接口”而来:Collection和Map。1.1 Collection有两个子接口:List和SetList特点是元素有序,且可重复。实现的常用集合类有Arra…

算法描述怎么写伪代码java_伪代码描述算法

伪代码是自然语言和类编程语言组成的混合结构。它比自然语言更精确,描述算法很简洁;同时也可以很容易转换成计算机程序。下面就为大家介绍一下伪代码描述算法的介绍。伪代码描述算法一、算法描述是指对设计出的算法,用一种方式进行详细的描述…

java测试用例编写_TestNG测试用例编写和执行

编写TestNG用例测试基本上包括以下步骤:编写业务逻辑针对业务逻辑中涉及的方法编写测试类,在代码中插入TestNG的注解直接执行测试类或者添加一个testng.xml文件运行 TestNG.下面我们介绍一个完整的例子来测试一个逻辑类;1.创建一个pojo类Empl…

好爽 java_Intellij是进行scala开发的一个非常好用的工具,可以非常轻松查看scala源码,当然用它来开发Java也是很爽的,之前一直在用scala ide和ec...

Intellij是进行scala开发的一个非常好用的工具,可以非常轻松查看scala源码,当然用它来开发Java也是很爽的,之前一直在用scala ide和eclipse,现在换成intellij简直好用到飞起,但是有些人不知道怎么用intellij去创建一个…

java创建读取文件_Java实现文件的创建、读取、写入操作-Fun言

在日常的开发中,对文件的操作经常会有,所以今天教大家其中一种使用Java实现文件的创建、读取、写入操作创建文件String filenameTemp "D:\demo.txt";File filename new File(filenameTemp);if (!filename.exists()) {filename.createNewFile…

java调用js查询mongo_MongoDB增删查改操作示例【基于JavaScript Shell】

本文实例讲述了MongoDB增删查改操作。分享给大家供大家参考,具体如下:MongoDB自带了一个JavaScript Shell,所以在其中使用js语法是可以的。Insert操作:单条插入var single{"name":"mei","age":22}d…

java中什么是task_20171018java总结——Spring任务调度task:scheduled-tasks

从认识eclipse开始到现在,学习编程已经接近8个月的时间,从什么都不懂,到现在慢慢一点点学习编程,自己在不断地进步,要学习的地方还有很多。自己也从这个平台收获到了很多知识,我也希望在这个博客上面记录自…

java155apk_【原创】浅谈 Android APK定点爆破

[Java] 纯文本查看 复制代码.class public Lcom/mayor/codeSig/CodeSigWindow;.super Landroid/app/Activity;.source "CodeSigWindow.java"# instance fields.field private csig:Ljava/lang/String;.field editText:Landroid/widget/EditText;.field private isNum…

python包含多个元组的元组_如何在python中将多个”列出的”元组连接成一个元组?...

在python中,关于这个问题的答案很少,如何将一个元组列表连接到一个列表中?,如何在python中合并两个元组?,如何在python中合并任意数量的元组?所有的答案都引用了元组列表,所以提供的…

centos6.5 mysql主从_CentosMysql主从备份

1、主库设置my.cnfserver_id 2 必须唯一binlog-do-db abo-assist 备份的数据库log-binmysql-bin 开启binlog创建同步账号并授权grant replication slave on *.* to replication% identified by 123456;2、从库server_id 10 必须唯一3、开启主从同步(从库上操作)mysql> st…

java socket ftp登录_基于java socket的简单FTP功能实现

实现FTP的一些功能,如上传文件,下载文件,显示目录,改变目录,退出等功能import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;i…

java内嵌excel_如何在Excel中嵌入URL中的图像?

我试图从URL中提取图像并将其嵌入Excel中 .我的Excel表格很简单:它包含2列 .第1列具有图像URL . 在第2列中,我想嵌入图像 . 我使用以下代码 . 它在第一行工作得非常好,我在本地机器上保存了图像并给出了路径,但是当尝试直接从URL嵌…

java减治法深度优先查找_排序|减治法实现排序

总结一下排序嘿;)有插入排序和拓扑排序。1.插入排序/直接插入排序假设对较小的数组A[0...n-2]已经排好序了,然后把A[n-1]找到一个合适的位置插进去。一般来说是从右向左扫描这个有序的数组,直到遇到第一个小于A[n-1]的元素,然后把A[n-1]插在这…

linux服务器安装php7_CentOS 7 下 PHP 7.1.12 安装配置

Linux系统:CentOS 7记录在CentOS 7 下 PHP 7.1.12 安装配置的过程。先安装相关依赖包yum installpcre pcre-devel zlib zlib-devel openssl openssl-devel gd gd-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel e2fsprogs e2fsprogs-dev…

java试讲题目,常见的Java面试题汇总

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼二、关于集合1、Java中的集合及其继承关系关于集合的体系是每个人都应该烂熟于心的,尤其是对我们经常使用的List,Map的原理更该如此.2、poll()方法和remove()方法区别?poll() 和 remove() 都是从队列中取出一个元素&…

快钱接口php,快钱支付接口

1.下载快钱的demo代码和一个证书包,还有 人民币网关自助接入接口文档2.生成自己的证书2.0.安装 Win32OpenSSL_Light-0_9_8k.exe打开openssl.exe,2.1. 输入genrsa -out private-rsa.key 1024,按enter即可。2.2 输入req -new -x509 -key private-rsa.key…