有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

json在Java中使用parallelStream提取值

我有一个json数组:

"LiveSessionDataCollection": [
    {
      "CreateDate": "2017-12-27T13:29:06.595Z",
      "Data": "Khttp://www8.hp.com/us/en/large-format-printers/designjet-printers/products.html&AbSGOX+SGOXpLXpBF8CXpGOA9BFFPconsole.info('DeploymentConfigName%3DRelease_20171227%26Version%3D1')%3B&HoConfig: Release_20171227&AwDz//////8NuaCh63&Win32&SNgYAJBBYWCYKW9a&2&SGOX+SGOXpF/1en-us&AAAAAAAAAAAAQICBCXpGOAAMBBBB8jl",
      "DataFlags": 8,
      "DataFlagType": 264,
      "LegacyLiveSessionDataType": null,
      "LiveSessionId": 1545190526042650,
      "MessageNumber": 0,
      "StreamId": 0,
      "StreamMessageId": 0,
      "ProjectId": 201
    },
    {
      "CreateDate": "2017-12-27T13:29:08.887Z",
      "Data": "oDB Information Level : Detailed&9BbRoDB Annual Sales : 55000000&BoDB Audience : Mid-Market Business&AoDB%20Audience%20Segment%20%3A%20Retail%20%26%20Distribution&AoDB B2C : true&AoDB Company Name : Clicktale Inc&AoDB SID : 120325490&AoDB Employee Count : 275&AoDB Employee Range : Mid-Market&AoDB%20Industry%20%3A%20Retail%20%26%20Distribution&AoDB Revenue Range : $50M - $100M&AoDB Sub Industry : Electronics&AoDB Traffic : High&AWB9tY/8bvOBBP_({\"a\":[{\"a\":{\"s\":\"w:auto;l:auto;\"},\"n\":\"div53\"}]})&sP_({\"a\":[{\"a\":{\"s\":\"w:auto;l:auto;\"},\"n\":\"div62\"}]})&FP_({\"r\":[\"script2\"],\"m\":[{\"n\":{\"nt\":1,\"tn\":\"SCRIPT\",\"a\":{\"async\":\"\",\"src\":\"http://admin.brightcove.com/js/api/SmartPlayerAPI.js?_=1514381348598\"},\"i\":\"script55\"},\"t\":false,\"pn\":\"head1\"}]})&8GuP_({\"a\":[{\"a\":{\"s\":\"t:0px;mt:0px;l:274.5px;ml:0px;\"},\"n\":\"div442\"}]})&SP_({\"a\":[{\"a\":{\"s\":\"t:0px;mt:0px;l:274.5px;ml:0px;\"},\"n\":\"div444\"}]})&D",
      "DataFlags": 8,
      "DataFlagType": 264,
      "LegacyLiveSessionDataType": null,
      "LiveSessionId": 1545190526042650,
      "MessageNumber": 1,
      "StreamId": 0,
      "StreamMessageId": 1,
      "ProjectId": 201
    },
    {
      "CreateDate": "2017-12-27T13:29:08.971Z",
      "Data": "P_({\"a\":[{\"a\":{\"s\":\"mih:480px;\"},\"n\":\"div105\"},{\"a\":{\"s\":\"mih:480px;\"},\"n\":\"div114\"},{\"a\":{\"s\":\"mih:480px;\"},\"n\":\"div123\"}]})&9B+8P_({\"a\":[{\"a\":{\"s\":\"mih:480px;\"},\"n\":\"div167\"},{\"a\":{\"s\":\"mih:480px;\"},\"n\":\"div169\"},{\"a\":{\"s\":\"mih:480px;\"},\"n\":\"div178\"}]})&JP_({\"a\":[{\"a\":{\"s\":\"mih:457px;\"},\"n\":\"div220\"},{\"a\":{\"s\":\"mih:457px;\"},\"n\":\"div229\"},{\"a\":{\"s\":\"mih:457px;\"},\"n\":\"div238\"}]})&FP_({\"a\":[{\"a\":{\"s\":\"mih:480px;\"},\"n\":\"div282\"},{\"a\":{\"s\":\"mih:480px;\"},\"n\":\"div291\"},{\"a\":{\"s\":\"mih:480px;\"},\"n\":\"div300\"}]})&HP_({\"a\":[{\"a\":{\"s\":\"t:0px;mt:-92px;l:274.5px;ml:0px;\"},\"n\":\"div442\"}]})&HP_({\"a\":[{\"a\":{\"s\":\"t:0px;mt:-92px;l:274.5px;ml:0px;\"},\"n\":\"div444\"}]})&B",
      "DataFlags": 8,
      "DataFlagType": 264,
      "LegacyLiveSessionDataType": null,
      "LiveSessionId": 1545190526042650,
      "MessageNumber": 2,
      "StreamId": 0,
      "StreamMessageId": 2,
      "ProjectId": 201
    }]

我正在尝试使用parallelStream()forEach()获取所有DataFlagType

这是我写的代码,但我遇到了错误:

jsonArray = (JSONArray) json.get("LiveSessionDataCollection");
jsonArray.parallelStream().forEach(
    x -> ((JSONObject) dataFlagType = (JSONObject) jsonArray.get(1)));

我不知道如何使用parallelStream()。如何从json数组中获取所有DataFlayType值(如int


共 (1) 个答案

  1. # 1 楼答案

    首先需要获取所有对象的DataFlagType属性的流,然后将其收集到列表中:

    jsonArray.parallelStream().map(x-> ((JSONObject)x).get("DataFlagType")).collect(Collectors.toList())

    输出:

    [264]