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
Apr 21, 2024 22:13Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 22:13Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 22:12Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 22:01Joad NacerJoad NacerCPPclang++10.0.0Error
Apr 21, 2024 21:50Joad NacerJoad NacerCPPclang++10.0.0Success167,851+0.57 RP
Apr 21, 2024 21:45Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:46Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:45Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:44Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:32Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:32Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:30Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:29Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:29Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:27Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:27Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:26Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:26Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:25Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:06Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 19:03Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 18:55Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 18:32Joad NacerJoad NacerCPPg++9.4.0Success169,468+50.15 RP
Apr 21, 2024 18:31Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 18:28Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 18:28Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 16:45Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 16:44Joad NacerJoad NacerCPPg++9.4.0Error
Apr 21, 2024 16:39Joad NacerJoad NacerGOgo1.22.2Error
Apr 20, 2024 00:02Joad NacerJoad NacerGOgo1.22.2Success1,129,100+8.86 RP
Feb 18, 2024 14:22AnSaAnSaCPPg++9.4.0Error
Dec 22, 2023 03:00Kenneth MaplesKenneth MaplesCPPg++9.3.0Success6,296+1.26 RP
Dec 19, 2023 13:35Oleg KovalovOleg KovalovGOgo1.21.5Success1,024,814+0.23 RP
Dec 12, 2023 08:34Oleg KovalovOleg KovalovGOgo1.21.5Success1,050,031
Dec 11, 2023 15:35Oleg KovalovOleg KovalovGOgo1.21.5Success1,049,714+9.53 RP
Jul 29, 2023 10:26Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Success12,973
Jul 29, 2023 10:17Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Success12,939
Jul 29, 2023 10:16Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Success12,794
Jul 28, 2023 23:20Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Success17,161
Jul 28, 2023 23:17Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Error
Jul 28, 2023 23:15Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Error
Jul 28, 2023 23:15Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Error
Jul 28, 2023 23:01Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Error
Jul 28, 2023 22:46Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Success16,254
Jul 28, 2023 22:37Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Error
Jul 28, 2023 22:32Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Error
Jul 28, 2023 22:26Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Success12,967
Jul 28, 2023 22:14Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Error
Jul 28, 2023 22:12Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Success10,890
Jul 28, 2023 22:11Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Error
Jul 28, 2023 21:46Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Success12,738
Jul 28, 2023 21:38Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Success14,212
Jul 28, 2023 21:37Yurkov AlekseyYurkov AlekseyCPPg++9.3.0Success12,764
Jul 22, 2023 14:19gchebanovgchebanovCPPg++9.3.0Success11,121
Jul 22, 2023 14:16gchebanovgchebanovCPPg++9.3.0Success10,931+16.92 RP
Jul 22, 2023 14:12gchebanovgchebanovCPPg++9.3.0Error
Jul 22, 2023 14:10gchebanovgchebanovCPPg++9.3.0Error
Jul 22, 2023 14:08gchebanovgchebanovCPPg++9.3.0Success11,137+173.38 RP
Jul 22, 2023 14:06gchebanovgchebanovCPPg++9.3.0Error
Jul 22, 2023 13:57gchebanovgchebanovCPPg++9.3.0Success14,209
Jul 22, 2023 13:55gchebanovgchebanovCPPg++9.3.0Success13,847
Jul 22, 2023 13:52gchebanovgchebanovCPPg++9.3.0Success13,802+28.30 RP
Jul 22, 2023 13:50gchebanovgchebanovCPPg++9.3.0Success14,363+2.66 RP
Jul 22, 2023 13:48gchebanovgchebanovCPPg++9.3.0Success14,520
Jul 21, 2023 21:32gchebanovgchebanovCPPg++9.3.0Success14,418+73.54 RP
Jul 21, 2023 21:30gchebanovgchebanovCPPg++9.3.0Success16,135
Jul 21, 2023 21:26gchebanovgchebanovCPPg++9.3.0Error
Jul 21, 2023 21:25gchebanovgchebanovCPPg++9.3.0Error
Jul 21, 2023 21:22gchebanovgchebanovCPPg++9.3.0Success16,128+620.04 RP
Jul 21, 2023 21:12gchebanovgchebanovCPPg++9.3.0Error
Jul 21, 2023 21:08gchebanovgchebanovCPPg++9.3.0Error
Feb 15, 2023 19:48LiamLiamGOgo1.20Success1,061,448+9.42 RP
Dec 11, 2022 04:54Kenneth MaplesKenneth MaplesCPPg++9.3.0Success6,301+73.50 RP
Dec 11, 2022 04:53Kenneth MaplesKenneth MaplesCPPclang++10.0.0Success6,607+12.95 RP
Dec 11, 2022 04:52Kenneth MaplesKenneth MaplesCPPclang++10.0.0Success7,680
Dec 11, 2022 04:50Kenneth MaplesKenneth MaplesCPPclang++10.0.0Success6,664+14.27 RP
Dec 11, 2022 04:49Kenneth MaplesKenneth MaplesCPPg++9.3.0Success6,728+1'486.33 RP
Dec 11, 2022 04:17Kenneth MaplesKenneth MaplesCPPg++9.3.0Error
Dec 1, 2022 04:14apuxbtapuxbtCPPg++9.3.0Error
Dec 1, 2022 04:13apuxbtapuxbtCPPg++9.3.0Error
Dec 1, 2022 04:08apuxbtapuxbtCPPg++9.3.0Success60,141+2.11 RP
Dec 1, 2022 04:06apuxbtapuxbtCPPg++9.3.0Success60,915+20.34 RP
Dec 1, 2022 04:05apuxbtapuxbtCPPg++9.3.0Success69,530+143.82 RP
Aug 22, 2022 17:46Robert BurkeRobert BurkeGOgo1.19Success1,118,395+8.94 RP
Aug 17, 2022 08:51Robert BurkeRobert BurkeGOgo1.19Error
Aug 9, 2022 19:17Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Success19,114+7.13 RP
Aug 9, 2022 19:13Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Success19,378+10.51 RP
Aug 9, 2022 19:09Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Success19,781+18.78 RP
Aug 9, 2022 16:35Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Success20,544+9.09 RP
Aug 9, 2022 16:33Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Success20,935+1.37 RP
Aug 9, 2022 16:32Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Success20,995+125.41 RP
Aug 9, 2022 16:26Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Success28,499+341.82 RP
Aug 9, 2022 16:22Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Success1,347,245
Aug 9, 2022 16:05Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Error
Aug 9, 2022 16:01Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Error
Aug 8, 2022 17:57Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Error
Aug 8, 2022 17:42Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Error
Aug 8, 2022 17:39Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Error
Aug 8, 2022 17:29Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Success1,102,450+0.01 RP
Aug 8, 2022 16:20Eugene ZhydzetskiEugene ZhydzetskiGOgo1.19Error