Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 并行解析n个JSON对象并形成聚合JSON的优化方法_Java_Json_Jackson_Gson - Fatal编程技术网

Java 并行解析n个JSON对象并形成聚合JSON的优化方法

Java 并行解析n个JSON对象并形成聚合JSON的优化方法,java,json,jackson,gson,Java,Json,Jackson,Gson,作为有效实现的一部分,解析多个JSON并将结果JSON聚合为最终输出 假设: Json1 : [ { "id":"abc", "name" : "json" }, ... having 10k json objects ] Json2: [ { "id":"abc", "language" : "java" }, ... having 10k json objects ] Json3: [ { "id":"abc", "subject" : "solvin

作为有效实现的一部分,解析多个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个JSON中,需求是 1.优化了在3个json中搜索属性“id”的方法,并将这些json对象映射到最终json对象

遵循的方法

我试着用下面的方法

Iterate over the first JSON array object and find the one attribute "id" and iterate over remaining JSON's and look the matching "id" and corresponding JSON object merging and forming final objects In this process, Taking O(n^3) time for search the find the matching records more ever n > 10k in my case 迭代第一个JSON数组对象,找到一个属性“id”,迭代剩余的JSON,并查看匹配的“id”和相应的JSON对象合并并形成最终对象 在这个过程中,, 用O(n^3)时间搜索并查找匹配的记录 在我的案例中,n>10k的情况更为严重
假设您已经知道所有可能的JSON字段,并且
id
是一个唯一的属性,那么最好的方法是什么, 创建一个java对象以反映所有字段

class MyObject{
    String id;
    String name; 
    String language;
    String subject;
}

然后创建一个键值对列表,以
id
作为键。每当您找到一个
id
,如果它出现在键值对列表中,则修改相应的对象。否则,创建一个新对象并将其作为新的键值对添加到列表中。这样,您将只遍历每个JSON一次,但可能会占用大量的辅助空间。

您可以使用Map创建键值对列表,这会影响应用程序的停机时间。是否有任何库或模式可用于实现这一点是的,您的方法似乎还可以,如果您不知道id在流(json)中的位置,您需要逐个流化它们(以查找全部),没有办法,例如,如何流式查看这一点,但在这种方法中会消耗辅助空间,从而影响应用程序的运行。我们是否有任何现有的库或模式来实现这一点?我不知道还有其他的库或模式,将所有对象映射到对象并进行检查,但是速度较慢,占用内存更多