XML to JSON Sergey Svistunov

Convert 1,000,000 person records from XML to JSON as fast as possible.

Input

XML document on STDIN:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="1512376">
        <age>30</age>
        <height>169.1</height>
        <married>true</married>
        <phone code="+6"><number>1283603279</number></phone>
        <phone code="+6"><number>1659964668</number></phone>
    </person>
    ...
</persons>

Output

One JSON object per person to STDOUT, preserving order:

{
    "id": 1512376,
    "age": 30,
    "height": 169.1,
    "married": true,
    "phones": [
        {
            "code": "+6",
            "number": 1283603279
        },
        {
            "code": "+6",
            "number": 1659964668
        }
    ]
}

Constraints

  • Preserve the order of persons
  • Omit the phones field if the phone array is empty
  • Maximum number of phones per person is 3
Date AuthorLanguageStatus Score
Aug 8, 2022 16:19Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Error
Aug 8, 2022 16:10Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Success1,103,660+9.06 RP
Dec 25, 2021 05:07Alexander KimAlexander KimGOgo1.17.5Success1,075,401+9.30 RP
Oct 31, 2021 14:10Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success11,138
Oct 31, 2021 14:10Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 14:08Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success9,794
Oct 31, 2021 14:06Ilya AniskovetsIlya AniskovetsCPPclang++10.0.0Success10,179
Oct 31, 2021 14:00Ilya AniskovetsIlya AniskovetsCPPclang++10.0.0Success10,340
Oct 31, 2021 14:00Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success9,656+14.18 RP
Oct 31, 2021 13:59Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success9,790+2.08 RP
Oct 31, 2021 13:57Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success9,810+0.52 RP
Oct 31, 2021 13:54Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success10,004
Oct 31, 2021 13:43Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success9,815+7.21 RP
Oct 31, 2021 13:43Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 13:41Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success9,908
Oct 31, 2021 13:40Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success9,891
Oct 31, 2021 13:40Ilya AniskovetsIlya AniskovetsCPPclang++10.0.0Success10,295
Oct 31, 2021 13:39Ilya AniskovetsIlya AniskovetsCPPclang++10.0.0Success10,304
Oct 31, 2021 13:38Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success9,885+299.48 RP
Oct 31, 2021 13:20Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 13:02Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success14,042+29.60 RP
Oct 31, 2021 12:59Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success14,651+37.93 RP
Oct 31, 2021 12:55Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 12:54Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 12:54Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 12:45Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 12:44Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success15,513+2.15 RP
Oct 31, 2021 12:42Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 12:36Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success15,565+2.22 RP
Oct 31, 2021 12:35Ilya AniskovetsIlya AniskovetsCPPclang++10.0.0Success15,661
Oct 31, 2021 12:35Ilya AniskovetsIlya AniskovetsCPPclang++10.0.0Error
Oct 31, 2021 12:08Ilya AniskovetsIlya AniskovetsCPPclang++10.0.0Success15,619+240.13 RP
Oct 31, 2021 12:07Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success24,993+281.29 RP
Oct 31, 2021 12:03Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 11:59Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 11:57Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 11:55Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 11:55Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 11:44Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success1,239,013
Oct 31, 2021 11:41Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success1,238,860
Oct 31, 2021 11:37Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 11:35Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Oct 31, 2021 11:21Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success84,162+0.54 RP
Sep 18, 2021 20:42Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 20:38Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 20:38Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 20:26Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 20:22Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success92,969
Sep 18, 2021 20:18Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success84,547+31.44 RP
Sep 18, 2021 20:13Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success115,152+57.32 RP
Sep 18, 2021 20:11Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 20:10Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 20:09Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 20:06Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 20:05Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 20:02Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:56Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:52Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:48Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:46Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:43Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:41Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:30Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:30Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:24Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:21Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:18Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:13Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Success338,787+29.52 RP
Sep 18, 2021 19:11Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:09Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 19:07Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:59Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:56Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:53Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:52Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:49Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:45Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:42Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:41Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:41Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:37Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:34Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:32Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:28Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:27Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:24Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:24Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:22Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:19Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 18:17Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 17:56Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Sep 18, 2021 17:54Ilya AniskovetsIlya AniskovetsCPPg++9.3.0Error
Aug 21, 2021 19:01Yuriy LyfenkoYuriy LyfenkoCPPclang++10.0.0Success4,644+1'639.07 RP
Aug 21, 2021 19:00Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Error
Aug 21, 2021 17:56Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Error
Jul 17, 2021 10:30Yurkov AlekseyYurkov AlekseyCPPSuccess12,807
Jul 17, 2021 10:30Yurkov AlekseyYurkov AlekseyCPPSuccess14,208
Jul 17, 2021 09:27Yurkov AlekseyYurkov AlekseyCPPSuccess12,754
Jul 3, 2021 09:08gchebanovgchebanovCPPError
Jun 6, 2021 19:04Yuriy LyfenkoYuriy LyfenkoCPPSuccess9,625