如何将一个JSON包含到另一个JSON中?

13

我的第一个 JSON 是:

{  
  "categoryId":"Painting",  
  "subCategoryId":"Residential",  
  "alternatives":    [1,2,3,4,5],  
  "criterias":["price","quantity","yom","company"],  
  "answers":[["1000","12343","4543","","4645646"],["12","23","34","","45"],["2014","","2000","1990","2005"],["xyz","","Abc","jkl","mno"]]  
}  

这将来自一个Java URL,这里我使用PHP,在PHP中我调用了一个Java URL。

我的第二个JSON是:

{"criterias":"Location"}

我正在使用JQuery生成这个。 如何将第二个JSON包含在第一个JSON的条件中?


4
JSON没有任何机制可以引用或包含其他文件中的JSON内容。您必须手动编辑JSON并在其中插入其他JSON内容,或者在处理数据的编程语言中加载两个JSON文件,并编写一些自定义逻辑来合并数据。 - Felix Kling
你指的是哪种编程语言?你需要将你的第一个JSON字符串转换为对象,并添加一个新属性。 - Purushotham
现在你添加了jQuery标签,是在问如何(自定义)合并两个对象吗?那么它就与JSON无关了。数据来自哪里变得不相关了。 - Felix Kling
我正在使用jQuery和PHP。我们需要使用Ajax来完成这个吗? - sreenath
“我们需要使用ajax来完成这个吗?” 不需要,你可以使用PHP加载JSON并修改生成的数组/对象。说实话,你的问题非常模糊。不清楚你是想从另一个JSON文件中引用数据(这是不可能的),还是在解析JSON后合并数据结构,此时它与JSON无关了。 - Felix Kling
第一个 JSON 将来自 Java URL,我需要向第一个 JSON 添加额外的值,然后将其发送回去。这可能吗? - sreenath
5个回答

12

将一个文件包含到另一个文件中最简单的方法是使用cpp(C预处理器)。

例如,如果我有test.json:

{"name":"NAME",
#include "another.json"
}

以及 another.json 作为

"inner":"value"

你应该能够获得

$ cpp -P test.json
{"name":"NAME",
"inner":"value"
}
当然,您需要通过正确格式化两个部分来确保生成的语法是正确的。

1
这是一种非常有创意的方式,虽然不算最优雅的方法,但我喜欢这个想法。 - Tomer W

3

我相信原问题是如何在JavaScript中合并这两个JSON对象。假设如此,答案就很简单。

var firstJson = {  
  "categoryId":"Painting",  
  "subCategoryId":"Residential",  
  "alternatives":    [1,2,3,4,5],  
  "criterias":["price","quantity","yom","company"],  
  "answerss":[["1000","12343","4543","","4645646"],["12","23","34","","45"],["2014","","2000","1990","2005"],["xyz","","Abc","jkl","mno"]]  
};

var secondJson = {"criterias":"Location"};

firstJson.criterias = $.extend({},firstJson.criterias,secondJson.criterias);

1
你需要将第一个JSON字符串转换为对象并添加一个新属性。
如果是Java,你可以使用Google的 Gson库。
Gson gson = new Gson();
JsonObject jsonObj = gson.fromJson (jsonStr, JsonElement.class).getAsJsonObject();
jsonObj.add("criterias", "Location");

如果是 JavaScript,
var jObj = JSON.parse(jsonString);
jObj.criterias = "Location";  //jObj.NewItem = "NewValue";

@sreenath 你能给我展示一下你的第一个json字符串吗?比如:var jObj = JSON.parse('{"key":"value"}'); console.log(jObj.key); - Purushotham
现在它正常运行了,我忘记加上引号了。谢谢@uttam。 - sreenath

1

-5

如何合并两个非嵌套的JSON? - hasan.in

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接