本文目录一览:
- 1、求java合并json数据的代码
- 2、java中,怎么把两个jsonObject合并成一个?
- 3、java json 深度合并
- 4、两个json合并
- 5、如何将多个JSON文件合并?
- 6、PHP中将两个json合并成一个json,求大神帮忙
求java合并json数据的代码
我想了一下,但是得有一个前提,就是第一个json数组的size必须和第二个json数组的size相同,并且一一对应,否则将造成数组溢出。
如果是基于上面这个前提,那么实现的方法就简单了。
操作json对象,其实标准的方法是将实体类转换成json后再操作,我这里的话为了便捷直接使用谷歌的Gson来创建JsonObject了,其他的json依赖还有阿里巴巴的FastJson等等,看你平时用什么习惯。
引入Gson依赖:
dependency
groupIdcom.google.code.gson/groupId
artifactIdgson/artifactId
version2.8.0/version
/dependency
实现代码:
public class Main {
public static void main(String[] args) {
JsonArray jsonArray1 = new JsonArray();
JsonObject json11 = new JsonObject();
json11.addProperty("数据1", "0000");
json11.addProperty("数据2", "1111");
JsonObject json12 = new JsonObject();
json12.addProperty("数据1", "0000");
json12.addProperty("数据2", "1111");
JsonObject json13 = new JsonObject();
json13.addProperty("数据1", "0000");
json13.addProperty("数据2", "1111");
jsonArray1.add(json11);
jsonArray1.add(json12);
jsonArray1.add(json13);
System.out.println(jsonArray1);
JsonArray jsonArray2 = new JsonArray();
JsonObject json21 = new JsonObject();
json21.addProperty("数据3", "6666");
JsonObject json22 = new JsonObject();
json22.addProperty("数据3", "6666");
JsonObject json23 = new JsonObject();
json23.addProperty("数据3", "6666");
jsonArray2.add(json21);
jsonArray2.add(json22);
jsonArray2.add(json23);
System.out.println(jsonArray2);
//遍历json数组,按位取出对象
for (int i = 0; i jsonArray1.size(); i++) {
JsonObject json1 = jsonArray1.get(i).getAsJsonObject();
JsonObject json3 = jsonArray2.get(i).getAsJsonObject();
//遍历数据3内容,通过Entry获取数据3的key和value,并合并到数据1中
for (Map.EntryString, JsonElement item : json3.entrySet()) {
json1.addProperty(item.getKey(), item.getValue().getAsString());
}
}
System.out.println(jsonArray1);
}
}
整体思路为:遍历两个json数组,按位进行合并操作。合并时,遍历数据3的jsonObject,获取其key和value,并将其合并到数据1中即可。
运行结果:
java中,怎么把两个jsonObject合并成一个?
方法为,把两个拼装好的JSON串合并成一个新的JSON,两个JSON相同的key值情况下只保存一个,后放入的JSON串对应key的Value值会覆盖先放入的。
具体操作设置方法为
import net.sf.json.JSONObject;
public class JSONCombine
{
public static void main(String[] args)
{
JSONObject jsonOne = new JSONObject();
JSONObject jsonTwo = new JSONObject();
jsonOne.put("name", "kewen");
jsonOne.put("age", "24");
jsonTwo.put("hobbit", "Dota");
jsonTwo.put("hobbit2", "wow");
JSONObject jsonThree = new JSONObject();
jsonThree.putAll(jsonOne);
jsonThree.putAll(jsonTwo);
System.out.println(jsonThree.toString());
}
}
运行结果:
{"name":"12345","age":"24","hobbit":"Dota","hobbit2":"wow"}
json转object示例
ObjectMapper objectMapper = new ObjectMapper();
YourClass class = objectMapper.readValue(YourJson, YourClass.class);
如果json中有新增的字段并且是YourClass类中不存在的,则会转换错误。
1)需要加上如下语句,这种方法的好处是不用改变要转化的类
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
YourClass class = objectMapper.readValue(YourJson, YourClass.class);
2)jackson库还提供了注解方法,用在class级别上
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class YourClass {
...
}
java json 深度合并
跟你讲一下思想吧,为了通用我们需要将问题考虑为并不是合并2个json,而是合并n个json
首先利用json包解析已知n个json字符串使其成为Map,
创建新空的jsonA对象,开始对n个已知json使用深度遍历,
深度遍历的开始点将会把jsonA的指针初始化,深度遍历第n个json的每个节点,jsonA的指针随之变动,若jsonA指针指向为空,则与其遍历的第n个json节点进行赋值。
即可对json进行合并。
两个json合并
var str1=[{name:"11",age:11}];var str2=[{name:"22",age:22}];var str3 = [];for (var i = 0; i str1.length; i++) { str3.push(str1[i]);}for (var i = 0; i str2.length; i++) { str3.push(str2[i]);}--------------var str3 = str1.concat(str2);
如何将多个JSON文件合并?
将这些json文件内容合并,然后将合并后的内容预置到main.js中,修改cocos源码,判断如果请求的是asset json则从预置的main.js中读取出来,避免网络请求;
1、
需要修改main.js和cocos2d-js-min.js这两个文件;
2、将生成的所有json文件内容合并成一个大的json object,格式:{"json1文件名":"json1文件内容", "json2文件名":"json2文件内容" ...}
3、copy出工具生成的json文件内容,放到main.js中:
粘贴的图像1484x330 87.3 KB
4、然后在 main.js里加上很挫的几行代码:
window.inner_downloadText = function (item, callback) {
if (item.type === "uuid") {
if (jsonObj[item.uuid]) {
callback(null, jsonObj[item.uuid]);
} else if (jsonObj[item.id]) {
callback(null, jsonObj[item.id]);
}
return true;
}
return false;
};
放在这里:
5、修改 cocos2d-js-min.js文件,找到 第20行,第2833列,插入很挫的代码:
if(window.inner_downloadText(t,e)) {return;};
PHP中将两个json合并成一个json,求大神帮忙
先把两个json字符串都变成PHP的数组,这样两个数组可以用 PHP 的 array_merge来合并。
合并完了之后的数组再用一下PHP 的 json_encode 就得到你要的结果了。
具体过程如下 :
json_encode(
array_merge(
json_decode($json1),
json_decode($json2)
)
);