我一直在试图弄清楚如何使用php将多个JSON文件重新格式化为单个文件,但我很难理解如何使用复杂的正则表达式。假设我有以下JSON数据的多个实例:
{
"felines": {
"cats": [
{
"age": 7,
"name": "frank"
},
{
"age": 4,
"name": "popeye"
}
]
},
"canines": {
"dogs": [
{
"age": 2,
"name": "lucy"
},
{
"age": 12,
"name": "wilson"
}
]
}
}
假设我在php脚本中有2个这个JSON对象的实例,并且想要创建一个JSON对象,该对象结合了我拥有的两个独立JSON实例中的“猫”对象,删除了“犬”对象。我最终想要的文件看起来像这样:
{
"felines": {
"cats": [
{
"age": 7,
"name": "frank"
},
{
"age": 4,
"name": "popeye"
}
]
},
"felines": {
"cats": [
{
"age": 6,
"name": "sam"
},
{
"age": 4,
"name": "kelly"
}
]
}
}
有谁知道我如何能够使用php拼接和组合这些JSON对象与正则表达式?
感谢。
答案 0 :(得分:3)
为什么不使用json_encode& json_decode使用正则表达式执行php数组的工作似乎要容易得多。
答案 1 :(得分:1)
我怀疑这是你应该尝试用正则表达式解决的问题。考虑将JSON文件转换为关联数组,进行合并,然后再切换回JSON。
答案 2 :(得分:1)
正则表达式在处理任意嵌套的上下文(如JSON数据,HTML标记,编程语言等)时非常糟糕。一些扩展的正则表达式库会修补这些缺陷。
但是,真的,你有没有理由在JSON中做到这一点?还有正则表达式?你可能会有更多的 更容易将数据反序列化为真正的PHP数据结构,并在那里合并/操作。然后,当您完成后,重新序列化结果。
答案 3 :(得分:0)
最好的方法就像RageZ建议的那样,使用json_encode和json_decode,但是JSON不允许你拥有相同的密钥名称,是吗?你能得到的最好的就是:
{
"felines": {
"cats": [
{
"age": 7,
"name": "frank"
},
{
"age": 4,
"name": "popeye"
},
{
"age": 6,
"name": "sam"
},
{
"age": 4,
"name": "kelly"
}
]
}
}