рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдПрдХ рд╕реА ++ / рдХреНрдпреВрдЯреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрд╛ рдерд╛ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдерд╛ред рдорд╛рдирдХ QJsonDocument рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рдХрдо рдкреНрд░рджрд░реНрд╢рди, рд╕рд╛рде рд╣реА рдПрдХ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд░реНрдЧ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬрд┐рд╕рдиреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреАред рдкрд░рд┐рдгрд╛рдо JsonWriterSax рдкреБрд╕реНрддрдХрд╛рд▓рдп рдерд╛, рдЬреЛ рдЖрдкрдХреЛ рдЙрдЪреНрдЪ рдЧрддрд┐ рдХреЗ рд╕рд╛рде SAX рд╢реИрд▓реА рдореЗрдВ JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдореИрдВ MIT рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд github.com рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдореИрдВ рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдмрд┐рдЯ
JSON (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдиреЛрдЯреЗрд╢рди) рдбрдЧрд▓рд╕ рдХреНрд░реЙрдХрдлреЛрд░реНрдб рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рд╕рдВрд░рдЪрд┐рдд рдкрд╛рда рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ ECMAScript рднрд╛рд╖рд╛ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, JScript, рдЖрджрд┐) рдХрд╛ рдПрдХ рдЙрдк рд╕рдореВрд╣ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред JSON рдПрдХреНрд╕рдПрдордПрд▓ рдХреА рдЬрдЧрд╣, рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди JSON рдореЗрдВ рджреЛрд╖ рд╣реИрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдорд╛рдирдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ - рдЖрдкрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЬрдм рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рддрд┐рдерд┐ рдкреНрд░рдХрд╛рд░ рдПрдХ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕реЛрдЪрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЬреЗрдПрд╕ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд╛рд░реНрд╕ рдФрд░ рд╕рдВрд░рдЪрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдореБрдЦреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ - рдПрд╕рдПрдПрдХреНрд╕ рдФрд░ рдбреЛрдоред рд╡реЗ рдПрдХреНрд╕рдПрдордПрд▓ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджрд┐рдП, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
SAX (XML рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ API)
рдпрд╣ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдмрдбрд╝реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрдврд╝рддреЗ рд╕рдордп, рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ рддрддреНрд╡ рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╡реЗрджрди рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реВрдЪрдирд╛ рдФрд░ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╕рдВрд░рдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдирд┐рд╣рд┐рдд рд╣реИред рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рд╢реИрд▓реА рдореЗрдВ рдХрджрдо рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдПрдХ рддрддреНрд╡ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рдЙрдк-рддрддреНрд╡ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд▓рд┐рдЦреЗрдВ, рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦреЗрдВ, рдПрдХ рдЙрдк-рддрддреНрд╡ рдмрдВрдж рдХрд░реЗрдВ, рдПрдХ рддрддреНрд╡ рдмрдВрдж рдХрд░реЗрдВред рдиреБрдХрд╕рд╛рди рдореЗрдВ рдпрд╣ рддрдереНрдп рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдореМрдЬреВрджрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рдВрдкрд╛рджрди рдХреА рдХрдореА рдпрд╛ рдЪрд░рдо рд╕реАрдорд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
DOM (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓)
рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде, рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯреНрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреНрд░рдордмрджреНрдз, deserialized рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рдЙрдЪреНрдЪ рдореЗрдореЛрд░реА рдЦрдкрдд рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реИред рд╣реБрдб рдХреЗ рддрд╣рдд, рдПрдХ рдПрд╕рдПрдПрдХреНрд╕ рд╣реИрдВрдбрд▓рд░ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
QJsonDocument рд╕рдорд╕реНрдпрд╛рдПрдВ
рдорд╛рдирдХ QJsonDocument DOM рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рддреЗ рд╕рдордп, рдЧрддрд┐ рдХрдо рд╣реЛрддреА рд╣реИ - рдЖрдк рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдереА, рдмреАрдорд╛рд░-рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕реА рдбрд┐рдЬрд╛рдЗрдиред
auto max = std::numeric_limits<int>::max(); QJsonArray ja; for(auto i = 0; i < max; ++i) { ja.append(i); if(ja.size() - 1 != i) { break; } }
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрджрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреНрд░реАрдо рдкрд░ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
QJson: Document too large to store in data structure
рдФрд░ рдбреЗрдЯрд╛ рдЕрдм рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рд╕рд░рдгреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
ja.size() - 1 != i
рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рд▓рдЧрд╛рддрд╛рд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдПрдХ рдирдИ рдХреБрдВрдЬреА рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИ? рддреНрд░реБрдЯрд┐ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд▓реЙрдЧ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ?
рдкреБрд╕реНрддрдХрд╛рд▓рдп
JsonWriterSax рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдкрдХреЛ SAX рд╢реИрд▓реА рдореЗрдВ рдПрдХ рдХреНрдпреВрдЯреЗрдХреНрд╕реНрдЯрд╕реНрдЯреНрд░реАрдо рдореЗрдВ JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЬреАрдердм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдореЗрдореЛрд░реА рдХрдВрдЯреНрд░реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЯрд┐рдХреА рд╣реБрдИ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп JSON рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдпрджрд┐ рддрддреНрд╡ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓реЗрдЦрди рдлрд╝рдВрдХреНрд╢рди рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрдПрд╕ рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦреЗ рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдХреБрдЫ рдорд╛рдорд▓рд╛ рдЕрдкреНрд░рд╛рдкреНрдп рд░рд╣ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдХреЛрдИ рдЪреЗрдХ рдХреЗ рдЧрд▓рдд рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ - рддреЛ рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рд╡рд░рдг рдХреЛрдб рдЙрджрд╛рд╣рд░рдг =) рд╣реИ
рдЙрджрд╛рд╣рд░рдг
рдРрд░реЗ рд╕реГрдЬрди
QByteArray ba; QTextStream stream(&ba); stream.setCodec("utf-8"); JsonWriterSax writer(stream); writer.writeStartArray(); for(auto i = 0; i < 10; ++i) { writer.write(i); } writer.writeEndArray(); if(writer.end()) { stream.flush(); } else { qWarning() << "Error json"; }
рдирддреАрдЬрддрди, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
[0,1,2,3,4,5,6,7,8,9]
рд╡рд╕реНрддреБ рдирд┐рд░реНрдорд╛рдг
QByteArray ba; QTextStream stream(&ba); stream.setCodec("utf-8"); JsonWriterSax writer(stream); writer.writeStartObject(); for(auto i = 0; i < 5; ++i) { writer.write(QString::number(i), i); } for(auto i = 5; i < 10; ++i) { writer.write(QString::number(i), QString::number(i)); } writer.writeKey("arr"); writer.writeStartArray(); writer.writeEndArray(); writer.writeKey("o"); writer.writeStartObject(); writer.writeEndObject(); writer.writeKey("n"); writer.writeNull(); writer.write(QString::number(11), QVariant(11)); writer.write("dt", QVariant(QDateTime::fromMSecsSinceEpoch(10))); writer.writeEndObject(); if(writer.end()) { stream.flush(); } else { qWarning() << "Error json"; }
рдирддреАрдЬрддрди, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
{"0":0,"1":1,"2":2,"3":3,"4":4,"5":"5","6":"6","7":"7","8":"8","9":"9","arr":[],"o":{},"n":null,"11":11,"dt":"1970-01-01T03:00:00.010"}
рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдирд╛
QByteArray ba; QTextStream stream(&ba); stream.setCodec("utf-8"); JsonWriterSax writer(stream); writer.writeStartArray(); for(auto i = 0; i < 1000; ++i) { writer.writeStartObject(); writer.writeKey("key"); writer.writeStartObject(); for(auto j = 0; j < 1000; ++j) { writer.write(QString::number(j), j); } writer.writeEndObject(); writer.writeEndObject(); } writer.writeEndArray(); if(writer.end()) { stream.flush(); } else { qWarning() << "Error json"; }
рдорд╛рдирдХ
рд░рд┐рд▓реАрдЬ рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди QBENCHMARK рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдп JsonWriterSaxTest рд╡рд░реНрдЧ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рд╛рдердорд┐рдХ OS 5.0 рдЬреВрдиреЛ, рдХрд░реНрдиреЗрд▓ 4.15.0-38-рдЬреЗрдиреЗрд░рд┐рдХ, рд╕реАрдкреАрдпреВ рдЗрдВрдЯреЗрд▓┬о рдХреЛрд░ (рдЯреАрдПрдо) 2 рдХреНрд╡рд╛рдб рд╕реАрдкреАрдпреВ 9550 @ 2.83GHz, 4G рд░реИрдо, Qt 5.11.2 GCC 5.3.1
рд▓рдВрдмреА рд╕рдВрдЦреНрдпрд╛ рд╕рд░рдгреА
- QJsonDocument: 42 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 85, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 2)
- JsonWriterSax: 23 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 93, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 4)
рдмрдбрд╝реА рдПрдХ-рд╕реНрддрд░реАрдп рд╡рд╕реНрддреБ
- QJsonDocument: 1,170 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 1,170, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
- JsonWriterSax: 53 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 53, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
рдмрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ
- QJsonDocument: 1,369 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 1,369, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
- JsonWriterSax: 463 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 463, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
рдкреНрд░рд╛рдердорд┐рдХ OS 5.0 рдЬреВрдиреЛ, рдХрд░реНрдиреЗрд▓ 4.15.0-38-рдЬреЗрдиреЗрд░рд┐рдХ, рд╕реАрдкреАрдпреВ рдЗрдВрдЯреЗрд▓┬о рдХреЛрд░ (рдЯреАрдПрдо) i7-7500U CPU @ 2.70GHz, 8G RAM, Qt 5.11.2 GCC 5.3.1
рд▓рдВрдмреА рд╕рдВрдЦреНрдпрд╛ рд╕рд░рдгреА
- QJsonDocument: 29.5 msecs рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 118, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 4)
- JsonWriterSax: 13 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 52, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 4)
рдмрдбрд╝реА рдПрдХ-рд╕реНрддрд░реАрдп рд╡рд╕реНрддреБ
- QJsonDocument: 485 msecs рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 485, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
- JsonWriterSax: 31 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 62, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 2)
рдмрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ
- QJsonDocument: 734 msecs рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 734, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
- JsonWriterSax: 271 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 271, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
MS Windows 7 SP1, CPU Intel┬о Core (TM) i7-4770 CPU @ 3.40GHz, 8G RAM, Qt 5.11.0 GCC 5.3.0
рд▓рдВрдмреА рд╕рдВрдЦреНрдпрд╛ рд╕рд░рдгреА
- QJsonDocument: 669 msecs рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 669, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
- JsonWriterSax: 20 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 81, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 4)
рдмрдбрд╝реА рдПрдХ-рд╕реНрддрд░реАрдп рд╡рд╕реНрддреБ
- QJsonDocument: 1,568 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 1,568, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
- JsonWriterSax: 44 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 88, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 2)
рдмрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ
- QJsonDocument: 1,167 msecs рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 1,167, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
- JsonWriterSax: 375 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 375, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
MS Windows 7 SP1, CPU Intel┬о Core (TM) i3-3220 CPU @ 3.30GHz, 8G RAM, Qt 5.11.0 GCC 5.3.0
рд▓рдВрдмреА рд╕рдВрдЦреНрдпрд╛ рд╕рд░рдгреА
- QJsonDocument: 772 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 772, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
- JsonWriterSax: 26 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 52, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 2)
рдмрдбрд╝реА рдПрдХ-рд╕реНрддрд░реАрдп рд╡рд╕реНрддреБ
- QJsonDocument: 2.029 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 2.029, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
- JsonWriterSax: 59 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 59, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
рдмрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ
- QJsonDocument: 1,530 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 1,530, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
- JsonWriterSax: 495 рдПрдордПрд╕рдИрд╕реА рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдХреБрд▓: 495, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ: 1)
рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ
рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдореИрдВ QVariant рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реВрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (рд╕реБрдВрджрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝) рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд╛рдЬрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░, рдпрджрд┐ рд╕рдореБрджрд╛рдп рдореЗрдВ рд░реБрдЪрд┐ рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рдПрд╕рдПрдПрдХреНрд╕ рдПрдХреНрд╕рд░ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред
рд╡реИрд╕реЗ, рдореЗрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдиреЗ рдореБрдЭреЗ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рддреНрд░реБрдЯрд┐ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХреА, рдЬреЛ рдкрд╛рдпрдерди рд▓реЙрдЧрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреА рд╢реИрд▓реА рдореЗрдВ рдкреНрд░рд╛рд░реВрдк рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП qInfo (), qDebug (), qWarning () рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдУрдкрдирд╕реЛрд░реНрд╕ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рднреА рдмрдирд╛рддрд╛ рд╣реВрдВ - рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред