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
May 21, 2024 23:40Joad NacerJoad NacerCPPg++9.4.0Success3,753
May 21, 2024 23:28Joad NacerJoad NacerCPPg++9.4.0Success3,990
May 21, 2024 23:24Joad NacerJoad NacerCPPg++9.4.0Success3,866
May 21, 2024 23:22Joad NacerJoad NacerCPPg++9.4.0Success3,698
May 21, 2024 23:21Joad NacerJoad NacerCPPg++9.4.0Success3,653
May 21, 2024 23:20Joad NacerJoad NacerCPPg++9.4.0Success3,652+27.46 RP
May 21, 2024 21:49Joad NacerJoad NacerCPPg++9.4.0Success3,765
May 21, 2024 21:47Joad NacerJoad NacerCPPg++9.4.0Success3,832
May 21, 2024 21:46Joad NacerJoad NacerCPPg++9.4.0Success3,775
May 21, 2024 21:12Joad NacerJoad NacerCPPg++9.4.0Success3,778
May 20, 2024 23:58Joad NacerJoad NacerCPPg++9.4.0Success3,794
May 13, 2024 00:23Joad NacerJoad NacerCPPg++9.4.0Success3,808
May 12, 2024 23:24Joad NacerJoad NacerCPPg++9.4.0Success3,776
May 12, 2024 23:23Joad NacerJoad NacerCPPg++9.4.0Error
May 12, 2024 23:22Joad NacerJoad NacerCPPg++9.4.0Error
May 12, 2024 01:01Joad NacerJoad NacerCPPg++9.4.0Success3,905
May 12, 2024 00:59Joad NacerJoad NacerCPPg++9.4.0Success3,761
May 12, 2024 00:58Joad NacerJoad NacerCPPg++9.4.0Success3,761
May 12, 2024 00:44Joad NacerJoad NacerCPPg++9.4.0Success4,261
May 12, 2024 00:41Joad NacerJoad NacerCPPg++9.4.0Error
May 12, 2024 00:39Joad NacerJoad NacerCPPg++9.4.0Success3,764
May 12, 2024 00:38Joad NacerJoad NacerCPPg++9.4.0Success3,766
May 12, 2024 00:37Joad NacerJoad NacerCPPg++9.4.0Success3,766
May 12, 2024 00:36Joad NacerJoad NacerCPPg++9.4.0Success3,771
May 10, 2024 00:49Joad NacerJoad NacerCPPg++9.4.0Success3,776
May 10, 2024 00:46Joad NacerJoad NacerCPPg++9.4.0Success3,798
May 10, 2024 00:45Joad NacerJoad NacerCPPg++9.4.0Success3,782
May 10, 2024 00:44Joad NacerJoad NacerCPPg++9.4.0Success3,784
May 10, 2024 00:01Joad NacerJoad NacerCPPg++9.4.0Success4,165
May 10, 2024 00:00Joad NacerJoad NacerCPPg++9.4.0Success3,966
May 9, 2024 23:56Joad NacerJoad NacerCPPg++9.4.0Success3,774
May 9, 2024 23:54Joad NacerJoad NacerCPPg++9.4.0Success3,792
May 9, 2024 23:54Joad NacerJoad NacerCPPg++9.4.0Success3,773
May 9, 2024 23:53Joad NacerJoad NacerCPPg++9.4.0Success3,773
May 9, 2024 23:52Joad NacerJoad NacerCPPg++9.4.0Error
May 9, 2024 23:51Joad NacerJoad NacerCPPg++9.4.0Success3,773
May 9, 2024 23:50Joad NacerJoad NacerCPPg++9.4.0Success3,795
May 9, 2024 23:47Joad NacerJoad NacerCPPg++9.4.0Error
May 9, 2024 23:38Joad NacerJoad NacerCPPg++9.4.0Success4,106
May 9, 2024 23:36Joad NacerJoad NacerCPPg++9.4.0Success3,787
May 9, 2024 23:35Joad NacerJoad NacerCPPg++9.4.0Success3,877
May 9, 2024 23:34Joad NacerJoad NacerCPPg++9.4.0Success3,880
May 9, 2024 23:32Joad NacerJoad NacerCPPg++9.4.0Success3,916
May 9, 2024 23:30Joad NacerJoad NacerCPPg++9.4.0Success3,984
May 9, 2024 23:27Joad NacerJoad NacerCPPg++9.4.0Success3,956
May 9, 2024 23:19Joad NacerJoad NacerCPPg++9.4.0Success4,107
May 9, 2024 23:18Joad NacerJoad NacerCPPg++9.4.0Success4,131
May 9, 2024 23:17Joad NacerJoad NacerCPPg++9.4.0Error
May 9, 2024 23:16Joad NacerJoad NacerCPPg++9.4.0Success4,105
May 9, 2024 23:14Joad NacerJoad NacerCPPg++9.4.0Error
May 9, 2024 23:10Joad NacerJoad NacerCPPg++9.4.0Success4,274
May 9, 2024 23:08Joad NacerJoad NacerCPPg++9.4.0Error
May 9, 2024 23:04Joad NacerJoad NacerCPPg++9.4.0Error
May 9, 2024 23:03Joad NacerJoad NacerCPPg++9.4.0Error
May 9, 2024 22:56Joad NacerJoad NacerCPPg++9.4.0Success3,966
May 9, 2024 22:56Joad NacerJoad NacerCPPg++9.4.0Success3,951
May 9, 2024 22:55Joad NacerJoad NacerCPPclang++10.0.0Success4,323
May 9, 2024 22:52Joad NacerJoad NacerCPPclang++10.0.0Success4,490
May 2, 2024 23:14Mikhail ShirokovMikhail ShirokovCPPg++9.4.0Error
May 2, 2024 23:12Mikhail ShirokovMikhail ShirokovCPPg++9.4.0Error
May 2, 2024 23:09Mikhail ShirokovMikhail ShirokovCPPg++9.4.0Error
May 2, 2024 23:07Mikhail ShirokovMikhail ShirokovCPPg++9.4.0Error
May 2, 2024 23:06Mikhail ShirokovMikhail ShirokovCPPg++9.4.0Error
May 2, 2024 23:05Mikhail ShirokovMikhail ShirokovCPPg++9.4.0Error
May 2, 2024 23:03Mikhail ShirokovMikhail ShirokovCPPg++9.4.0Error
May 2, 2024 23:01Mikhail ShirokovMikhail ShirokovCPPg++9.4.0Error
Apr 23, 2024 22:23Joad NacerJoad NacerCPPclang++10.0.0Success4,096
Apr 23, 2024 22:21Joad NacerJoad NacerCPPg++9.4.0Success4,021
Apr 23, 2024 22:20Joad NacerJoad NacerCPPg++9.4.0Success3,989
Apr 23, 2024 22:20Joad NacerJoad NacerCPPg++9.4.0Error
Apr 23, 2024 22:20Joad NacerJoad NacerCPPg++9.4.0Error
Apr 22, 2024 14:32Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Success3,632
Apr 22, 2024 14:28Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Success3,615+10.70 RP
Apr 22, 2024 14:27Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Success3,639
Apr 22, 2024 03:06Joad NacerJoad NacerCPPg++9.4.0Error
Apr 22, 2024 03:06Joad NacerJoad NacerCPPg++9.4.0Error
Apr 22, 2024 03:06Joad NacerJoad NacerCPPg++9.4.0Error
Apr 22, 2024 03:02Joad NacerJoad NacerCPPg++9.4.0Success4,981
Apr 22, 2024 03:01Joad NacerJoad NacerCPPclang++10.0.0Success4,326
Apr 22, 2024 02:58Joad NacerJoad NacerCPPclang++10.0.0Success4,349
Apr 22, 2024 02:58Joad NacerJoad NacerCPPg++9.4.0Success4,012
Apr 22, 2024 02:57Joad NacerJoad NacerCPPg++9.4.0Error
Apr 22, 2024 02:49Joad NacerJoad NacerCPPclang++10.0.0Success4,147
Apr 22, 2024 02:47Joad NacerJoad NacerCPPg++9.4.0Success4,082
Apr 22, 2024 02:45Joad NacerJoad NacerCPPg++9.4.0Error
Apr 22, 2024 02:44Joad NacerJoad NacerCPPg++9.4.0Error
Apr 22, 2024 02:40Joad NacerJoad NacerCPPg++9.4.0Error
Apr 22, 2024 02:26Joad NacerJoad NacerCPPg++9.4.0Success3,982
Apr 22, 2024 02:25Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Success3,730
Apr 22, 2024 02:24Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Success3,622+64.78 RP
Apr 22, 2024 02:23Joad NacerJoad NacerCPPg++9.4.0Success3,984
Apr 22, 2024 02:23Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Success3,667
Apr 22, 2024 02:22Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Success3,665+11.88 RP
Apr 22, 2024 02:21Yuriy LyfenkoYuriy LyfenkoCPPclang++10.0.0Success3,705
Apr 22, 2024 02:20Yuriy LyfenkoYuriy LyfenkoCPPclang++10.0.0Success3,766
Apr 22, 2024 02:17Yuriy LyfenkoYuriy LyfenkoCPPclang++10.0.0Success3,732
Apr 22, 2024 02:16Yuriy LyfenkoYuriy LyfenkoCPPclang++10.0.0Success4,216
Apr 22, 2024 02:10Yuriy LyfenkoYuriy LyfenkoCPPclang++10.0.0Success3,673+17.74 RP
Apr 22, 2024 02:09Yuriy LyfenkoYuriy LyfenkoCPPclang++10.0.0Error
Apr 22, 2024 02:01Yuriy LyfenkoYuriy LyfenkoCPPclang++10.0.0Success3,685+563.33 RP