【发布时间】:2019-10-25 15:56:09
【问题描述】:
作为解析多个 JSON 并将生成的 JSON 聚合为最终输出的有效实现的一部分。
假设:
Json1 :
[
{
"id":"abc",
"name" : "json"
},
... having 10k json objects
]
Json2:
[
{
"id":"abc",
"language" : "java"
},
... having 10k json objects
]
Json3:
[
{
"id":"abc",
"subject" : "solving"
},
... having 10k json objects
]
从 3 个 jsons 中,要求是 1.优化了在3个json中搜索属性“id”的方式,如果匹配映射这些json对象到最终的json对象。
遵循的方法
我尝试了以下方式
遍历第一个 JSON 数组对象并找到一个属性“id”并遍历剩余的 JSON 并查看匹配的“id”和相应的 JSON 对象合并并形成最终对象 在这个过程中, 花费 O(n^3) 时间搜索找到匹配的记录 就我而言,更多的是 n > 10k最好的方法是什么
【问题讨论】:
-
是的,您的方法似乎还可以,如果您不知道流(json)中的ID在哪里,则需要将它们逐个流式传输(查找全部),没有办法, 有关如何流式传输的信息,请参见 stackoverflow.com/q/25064773/5292302
-
但是在这种方法中会消耗辅助空间,这会影响应用程序。我们是否有任何现有的库或模式来实现这一目标
-
我不知道其他人,将所有对象映射到对象,但它们检查速度较慢且消耗更多内存