Libelektra: YAJL: рдкреНрд▓рдЧрдЗрди рд╕реАрдзреЗ рдорд╛рдЙрдВрдЯрдкреЙрдЗрдВрдЯ рдХреЗ рдиреАрдЪреЗ рд╡реИрд▓реНрдпреВ рд╕реЗрд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЬреБрд▓ре░ 2018  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ElektraInitiative/libelektra

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо

kdb mount config.json user/tests/yajl yajl
kdb set user/tests/yajl 'This May Be the Year I Disappear'
kdb ls user/tests/yajl
#> user/tests/yajl
kdb get user/tests/yajl 

рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо

рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ This May Be the Year I Disappear рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо

рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдПрдХ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рдгрд╛рд▓реА рдХреА рдЬрд╛рдирдХрд╛рд░реА

  • Elektra рд╕рдВрд╕реНрдХрд░рдг: рдорд╛рд╕реНрдЯрд░
  • OS: macOS 10.13.6
bug good first issue usability

рд╕рднреА 17 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕рдорд╕реНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдРрд╕рд╛ JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛? рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдореВрд▓ рдХреБрдВрдЬреА рд╡рд╛рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡рд┐рд╢реЗрд╖ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдРрд╕рд╛ JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛?

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХреЗрд╡рд▓ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдЧреА:

"This May Be the Year I Disappear"

ред рдкреНрд▓рдЧрдЗрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рдорд╛рди рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдЕрдЧрд░ рдореИрдВ рдКрдкрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ:

printf '"This May Be the Year I Disappear"' > (kdb file user/tests/yajl/)
kdb get user/tests/yajl
#> This May Be the Year I Disappear

ред

рддреЛ рдХреНрдпрд╛ рдХреЗрд╡рд▓ рд╕реЗрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИ? рдпрд╣ рдХрд╛рдлреА рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИ!

рддреЛ рдХреНрдпрд╛ рдХреЗрд╡рд▓ рд╕реЗрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИ?

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд╣рд╛рдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдЕрдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдХреБрдЫ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдореБрдЭреЗ @ markus2330 рджрд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдзрдиреНрдпрд╡рд╛рджред

рд╕реНрд░реЛрдд src / plugins / yajl / yajl_gen.c рдФрд░ src / plugins / yajl / yajl_parse.c рдореЗрдВ рд╣реИ

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ @sanssecours рдиреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд▓рд┐рдЦрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреЛрд░реЗрдЬ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рджреЗрдЦреЗрдВ doc / tutorials / storage-plugins.md)ред рддреЛ рдЖрдк рдЕрдЧрд▓реЗ рдЕрдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ # 2132 (# 2477 рд╢рд╛рдпрдж рдЗрд╕реА рдХрд╛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд╣реИ) рдФрд░ рдЕрдиреНрдп рдпрд╛рдЬ рд╕рдВрдмрдВрдзреА рд╕рдорд╕реНрдпрд╛рдПрдВред рдЖрдкрдХрд╛ рдореБрдЦреНрдп рдХрд╛рдо рдпрд╛рд▓рдЬ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░ - рдмрд╛рд╣рд░реА рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ (# 1862 рджреЗрдЦреЗрдВ)ред

рдпрджрд┐ рдореИрдВ рдПрдХ рдЦрд╛рд▓реА json рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реВрдВ (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ {} ), рддреЛ рдирд┐рдореНрди рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореИрдВ kdb set system/lvas/cm/yajl "test" рдХрд╣рддрд╛ рд╣реВрдВред
elektraYajlSet рдХреЛ KeySet рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ (system/lvas/cm/yajl,test) рд╣реЛрддрд╛ рд╣реИред

рдХреЙрд▓ рдореЗрдВ elektraGenEmpty рджреВрд╕рд░реЗ рдХреНрд▓реЙрдЬрд╝ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ KeySets рдХрд╛ рдЖрдХрд╛рд░ 1 рд╣реИред
рд╕реНрдЯреНрд░реИрдореНрдк рднреА рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреЗрд░реЗрдВрдЯреЗ рдХреЗ рдкрд╛рд╕ рдХреАрд╕реЗрдЯ рдореЗрдВ рдЕрдВрддрд┐рдо рдХреБрдВрдЬреА рдХреЗ рд╕рдорд╛рди рдореВрд▓реНрдп рд╣реЛрддрд╛ рд╣реИред

рдПрдХ рдЦрд╛рд▓реА рдирдХреНрд╢рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ elektraYajlSet рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдлрд╝рдВрдХреНрд╢рди рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рддреЛ рдЙрд╕ рдмрд┐рдВрджреБ рдЬрд╣рд╛рдВ рдЦрд╛рд▓реА рдирдХреНрд╢реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдкрд░, рдореИрдВ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ @sanssecours рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ рдХрд┐ рдПрдХ json рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХреБрдВрдЬреА рдореВрд▓реНрдп рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдпрд╣рд╛рдБ ред
рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ kdb рдЙрд╕ рдорд╛рди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ kdb set system/lvas/cm/yajl/second "hi" рдЬреИрд╕реА рдХреЙрд▓ рдЗрд╕ {"__dirdata": "test", "second": "hi"} рддрд░рд╣ рдПрдХ json рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рддреИрдпрд╛рд░ рдХрд░рддреА рд╣реИ, рдЬреЛ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рдореИрдк рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдХреНрд▓реАрдирд░ рдорд┐рд▓реЗрдЧрд╛ рдпрджрд┐ рдореИрдВ рд╕реАрдзреЗ json рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ {"__dirdata": "test"} рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рдПрдХ рд╣реА рд╢рдмреНрджрд╛рд░реНрде рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╣реА рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реАрд╡рд▓ рдкреНрд▓рдЧ рдЗрди рдХреБрдВрдЬреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдХрд┐ elektraYajlSet рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдпрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЦреБрдж рдХреЛ ElektraYajlSet рдореЗрдВ KeySet рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ @ markus2330 рд╕реБрдЭрд╛рд╡ рд╣реИ?

рд╣рд╛рдБ, Directoryvalue KeySet elektraYajlSet рдкреНрд░рд╛рдкреНрдд рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рддрдм рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдХреЗрд╡рд▓ рдкреЗрд░реЗрдВрдЯрдХреЗ рдореМрдЬреВрдж рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рддрдм рдЗрд╕реЗ "рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛" рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди ElektraGenEmpty рдХреА рдХреБрдЫ рдорд╛рдиреНрдпрддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдЕрдм рд╕рдЪ рдирд╣реАрдВ рд╣реИрдВ (рдпрд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛)ред рддреЛ рдЕрдиреНрдп рдХреАрдбрд╝реЗ рд╣реИрдВ, рдЬреИрд╕реЗ # 2132

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдХреНрд▓реАрдирд░ рдорд┐рд▓реЗрдЧрд╛ рдпрджрд┐ рдореИрдВ рд╕реАрдзреЗ json рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ {"__dirdata": "рдкрд░реАрдХреНрд╖рдг"} рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рд╢рдмреНрджрд╛рд░реНрде рд╕рдорд╛рди рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ {"": "test"} рдПрдХ рдорд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдиреНрдпреВрдирддрдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдпрд╣ "рдКрдВрдЯ" рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

@sanssecours рдЖрдк рд╢рд╛рдпрдж рдкреЗрд░реЗрдВрдЯреЗрдп рдФрд░ "рдЦрд╛рд▓реА рдХреБрдВрдЬреА" (%) (рдпрд╛ рдЕрдм рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо TODO) рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░реЗрдЬ-рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдЖрдк рд╕рдВрднрд╡рддрдГ рд╕реНрдЯреЛрд░реЗрдЬ-рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ parentKeys рдХрд╛ рднреА рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗтАж

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ

  • рдореВрд▓ рдХреБрдВрдЬреА рдХрд╛ рдореВрд▓реНрдп (рдлрд╝рд╛рдЗрд▓рдкрде), рдФрд░
  • рдЙрд╕ рдореВрд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рддреНрд░реБрдЯрд┐ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рд╕реВрдЪрдирд╛ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

ред рдореБрдЭреЗ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдЬреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рдХреБрдВрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╣реИред

рдФрд░ "рдЦрд╛рд▓реА рдХреБрдВрдЬреА" (%) (рдпрд╛ рдЕрдм рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо TODO)?

рдЪреВрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдЦрд╛рд▓реА рдХреБрдВрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВред

рдореИрдВ рдпрд╣рд╛рдБ @sanssecours рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХреЛрдб рдорд╛рди рдХреЛ рдПрдХ json рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рдерд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ YAJL рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡реИрдз JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╣рдореЗрд╢рд╛ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдПрдХ рд╕рд░рдгреА рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореБрдЭреЗ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдЬреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рдХреБрдВрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдПрдХ рдХреБрдВрдЬреА рдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдореВрд▓реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

"рдЦрд╛рд▓реА рдХреБрдВрдЬреА" (%)

рдЦрд╛рд▓реА рдЪрд╛рдмрд┐рдпрд╛рдБ рдЖрдкрдХреЛ {"root": {"": "something"}} рдЬреИрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ KeySet рдореЗрдВ рдХреИрд╕реЗ рдореИрдк рдХрд░рддреЗ рд╣реИрдВ?

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ YAJL рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡реИрдз JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╣рдореЗрд╢рд╛ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдПрдХ рд╕рд░рдгреА рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣ рдмрджрд▓рд╛ рд╣реБрдЖ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ: https://stackoverflow.com/questions/13318420/is-a-single-string-value-considered-valid-json

Https://www.ietf.org/rfc/rfc7159.txt рдореЗрдВ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рднреА рд╣реИрдВ рдЬреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ "рдХреЗрд╡рд▓ рдорд╛рди" рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╛рдЬрд▓ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ... (yajl 2.1.0-2 + тАЛтАЛb3 рддреНрд░реБрдЯрд┐ Expected тАЬ{тАЭ but found тАЬ"тАЭ )

RFC 7159 рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╕реЗ рд╣рдо рдирдХреНрд╢рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

"some value" -> рдорд╛рддрд╛-рдкрд┐рддрд╛ = "рдХреБрдЫ рдореВрд▓реНрдп"
{"", "some value"} -> рдорд╛рддрд╛-рдкрд┐рддрд╛ /% = "рдХреБрдЫ рдореВрд▓реНрдп"

рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рдж рдпрд╛рдЬрд▓ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА ... (рдЪреЗрдВрдЬрд▓реЙрдЧ рдпрд╣ рднреА рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛)ред

рдЦрд╛рд▓реА рдЪрд╛рдмрд┐рдпрд╛рдБ рдЖрдкрдХреЛ {"рд░реВрдЯ": {"": "рдХреБрдЫ"}} рдЬреИрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ KeySet рдореЗрдВ рдХреИрд╕реЗ рдореИрдк рдХрд░рддреЗ рд╣реИрдВ?

YAML CPP рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ:

kdb mount config.yaml user/tests/yaml yamlcpp
printf '{"root": {"": "something"}}' > "$(kdb file user/tests/yaml)"
kdb ls user/tests/yaml
#> user/tests/yaml/root/%
kdb get user/tests/yaml/root/%
#> something

ред рдореИрдВрдиреЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЦрд╛рд▓реА рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ ред рд╕реНрдЯреЛрд░реЗрдЬ рдкреНрд▓рдЧрдЗрди рдореЗрдВ setBaseName рдХреЛ рд╕рд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡реИрд▓реНрдпреВ ( "" ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд░рдирд╛, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рджреЗрдЦрдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдмрд╛рд╣рд░ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: +1:

@sanssecours рдХреНрдпрд╛ рд╣рдо рдЕрдм RFC 7159 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдпрджрд┐ рдХреЗрд╡рд▓ рдкреЗрд░реЗрдВрдЯрдХреЗ рд╕реЗрдЯ рд╣реЛ рддреЛ рдЖрдкрдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдЕрдм рд╣рдо RFC 7159 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рд╣рд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдпрджрд┐ рдХреЗрд╡рд▓ рдкреЗрд░реЗрдВрдЯрдХреЗ рд╕реЗрдЯ рд╣реЛ рддреЛ рдЖрдкрдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ?

рд╡реЗ рдХреЗрд╡рд▓ рдкрд╛рда рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ (рдХреБрдВрдЬреА рдХреЗ рдмрд┐рдирд╛):

kdb mount config.yaml user/tests/yaml yamlcpp
kdb set user/tests/yaml value
kdb file user/tests/yaml | xargs cat
#> value

ред

рдореИрдВрдиреЗ рдЗрд╕ рдХрдорд┐рдЯ рдореЗрдВ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рд╛ред
рдпрд╣ рдпрдЬ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЬрд╛рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рддрдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЕрдЧрд░ рд╡рд╣ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ @ markus2330?

рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдпрджрд┐ KeySet рдХрд╛ рдЖрдХрд╛рд░ 1 рд╣реИ, рддреЛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдХреБрдВрдЬреА рдЗрд╕рдореЗрдВ рд╣реИред рдлрд┐рд░ рдореИрдВ рдЙрд╕ рдХреБрдВрдЬреА рдХрд╛ рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореБрдЭреЗ elektraGenOpenValue рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдиреНрдпрдерд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

YAML CPP рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ:
...

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдпрдЬрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдБ?

рдпрд╣ рдпрдЬ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ

рдХреМрди рд╕рд╛ рдЯреЗрд╕реНрдЯ? (рдиреАрдЪреЗ рднреА рджреЗрдЦреЗрдВ)

рдореИрдВ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЕрдЧрд░ рд╡рд╣ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛

рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЙрдкрд╛рдп рд╣реИ рдпрджрд┐:

  • рдЖрдкрдиреЗ рдПрдХ PR рдмрдирд╛рдпрд╛ (рдЬреЛ рддрдм рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рдЪрд▓рд╛рдПрдЧрд╛)
  • рдПрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдк рдЕрдм рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдпрдЬрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдБ?

рдирд╣реАрдВ, рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ {"", "some value"} рдкреИрд░реЗрдВрдЯреА рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрджрд░реНрд╢ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдЕрдм рд╣рдо RFC 7159 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рд╣рд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдБред

рд╡реЗ рдХреЗрд╡рд▓ рдкрд╛рда рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ (рдХреБрдВрдЬреА рдХреЗ рдмрд┐рдирд╛):

рддреЛ рдЖрдЗрдП рд╣рдо рдЗрд╕реЗ рдпрд╛рд▓рдЬ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░реЗрдВред

рдпрд╣ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

sanssecours picture sanssecours  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mpranj picture mpranj  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dominicjaeger picture dominicjaeger  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

markus2330 picture markus2330  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dmoisej picture dmoisej  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ