Loki-Astari / ThorsMongo

C++ MongoDB API and BSON/JSON Serialization library
GNU General Public License v3.0
316 stars 72 forks source link

Problem with Serialize Import of a string #44

Closed isasmarthalo closed 5 years ago

isasmarthalo commented 5 years ago

Hello I'm having some issues to map a JSON file to a c++ object. I've simplifed the code I'm using to only show you the part of the object that has an issue being mapped to c++.

#include "ThorSerialize/Serialize.h"
#include "ThorSerialize/Serialize.tpp"
#include "ThorSerialize/Traits.h"
#include "ThorSerialize/JsonThor.h"
#include <string>
#include <sstream>
#include <iostream>
#include <vector>

using namespace std;

class ValhallaLeg {
    friend class ThorsAnvil::Serialize::Traits<ValhallaLeg>;
    private:
        string shape;
    public:
        ValhallaLeg(){};
        ~ValhallaLeg(){};
};

ThorsAnvil_MakeTrait(ValhallaLeg, shape);

int main()
{
    using ThorsAnvil::Serialize::jsonExport;
    using ThorsAnvil::Serialize::PrinterInterface;
    ValhallaLeg* result = nullptr;
    cin >> ThorsAnvil::Serialize::jsonImport(result);
    cout << ThorsAnvil::Serialize::jsonExport(result) << endl;

    return EXIT_SUCCESS;
}

Here is the json that I'm inputing in the console (and in my real code for the shape part of the json): {"shape": "offavAdqtekCsAcFhb@yW|SiMhH{AjLzAfb@lJld@jK~g@jLhScbCvRy~BxRu`C~Hk_A~Hi`AxRg_C~Rw`ChRi~Bh\\i|DpCo]|h@jBxRjAtYjApRvCrcBn]pBMlEz@tYrFdd@zK`h@pRbe@pRpf@b[re@~]dd@~]de@l_@ng@rd@zo@lj@vg@`f@hRtPnS`Rjf@fc@fh@dd@|h@be@ba@n^~a@j_@lcA~|@lo@xk@~g@td@fSkrBlZ|^vb@ng@vjBzsB`]rZ`b@xWveBdy@faAre@lvBvaArdAfb@fdDziAxQdFh`AhVts@bRpRrEtn@dPvDya@fD{_@bUrFbWbG`Gag@dF{Ath@bQti@bPf^nIbp@lJ|D^vNeFdK]lE?lYzApGxBxRvN`HhB`v@zAdELlZjA`q@nJ~g@fCz_AfDhu@|@bViMtP{AnS\\vX`Rf|@uDxdByLz~@iW~r@oThC]tEl@~BjA~C?~XaHnIeEvIsFpGiCvDN|Yfm@lOxVrPxCtZ_@p[{Jj\\mKfDkAf]kL~HwCp\\wMze@yMtd@sPpLeEhl@cR~w@iVrZmJ|O}@`XiBlOL~HrGt_@~H|OtEfItD~CxBlOlKbcBpyAvr@dn@dPvNn{@ls@vx@`r@zt@bo@fb@p]pa@p\\ze@ha@fgAl~@hW|S`xCpdCdo@|h@fh@vb@jKnIld@~]`g@|^ld@hXbe@hW|d@zUdi@~Sj`@fM`Cl@zA^vMdD|i@hN|}@jUfCl@jLvCtJxBgD`I~Cz@rQtEvw@pR~zAn]rtA`]vHvCrAdEvCdE|EvDhHbFlc@p\\hMrG`RdOxRrP~C|@dFhCvCdEfCxBlAzAdE|S~CdEtExCzU~HpQfN|UfNlE|@dE}@rK}IzFkAnDlIpBhCrPfOfIlIzFdFpBfD|@fD`BxBz[|SrQfEtDhBtOdOvDlAvRbFtK|JrFtDtTnI|N|J`CjArKbGzL`HfMfCjGhC~NtObK|IxHdFdT`HdELdJyAnDLfItEdErFNNhHfNfDvCnCxBlKtEzJjAlEjAfEvDpLdPro@vb@tOrPfN~HlFzAdEO~CkAvIiMxGyBzK`Iz@hBNhB_EjWNtDjAhCnYdObFdEbAxBNxBe@`IOtD^dEr@xBdAlAvCj@dE?|E]pByBnCcFjByBbFkBvIMjFxAzj@nT|hApf@pQhMnTjKtx@de@zEz@|JzAlEhBzZvXvTzLnRpQlPpHrFm@lJsFtEjAtEtEr@lT`IpRzJnIlOhM|d@lTfYj`@zPjUzPpHtYzV|OvMxa@fXxL]rKkA|ExBfDfDpG~HnIpGhRnIjPtE`IdEtc@hM~HhCxpAz`@jPzJh]b[dEzAjVkAtTzAfc@tEfh@rFtc@fN|JkAhGiCxC|@hBpG|EdEjFdEhHNfDkB|DlAfDz@pBdEzFvDbGm@zA\\|NvDvNpGrFdEdUpHdYbGhNxAhVfDfJ]xGl@bFvClEdF~DxArE^|O?lJxAbGhCtJvD~CvCxBrFp{@fvAjAjA~DlAvCtDzcA~|@jV~SxBsG`MzKdPfNbFdFrBzAjAz@~CvCdJ~InYvXri@pf@~CvC~c@l_@jV~SjKjKz@l@tJ~Ij[b[zAzAhWdYlJfNtJtOhW~]FN~HlJzPtOrAjAfYzV~XjU~MxL~w@pq@nChCbVlTlU|Td@{Ad@kAf^ecA~R{j@zFaGzFgO|@|@nCcG`HuYbAsGt@eEvDuNrAoJj@aHpC}StD{Ll@wCrGsZbAgDl@kBxW}qA~CeZnIqg@xB{J|h@zUj`@dP`{Atn@|IdEvb@~R`MrFdAl@\\NbnAzt@ld@rPlEjAzA^|^lJpb@zJtNfEtUdEvHl@bu@?dE?jBOfh@iC|bAoRfNgEn^sPzy@oItE^xBpGhB_JjAyArA?xRj@|DNhC|@zAjAth@zApk@xBlELnD{@dFkB~CgDd@{KT_It@wCbBkBbA]z@?jBNvCxB`CxBN\\DzAFdENzA\\z@bA^|@?pf@`Hhg@lItrA|TrAjBl@tEtDzi@FvDbAhl@t@fl@|@vc@tJl@`BiCF{U\\wCzA}@jLzAry@nHjFdFhRdd@l@zAdE`GhCxBjLjW~Wro@bBnIhB~Hf^`{@zAlJLl@jAdFvIjUnNb\\n^n{@`\\pq@|D~SNl@Nl@~BhLNjAt@hCdi@pfArAxAl@^`BLrBM~RgD|@\\j@jA|@fD|EbQjZvl@t@zAnIrQ~HfXpBrFpCrFl@hC~ChL`C~I`BtD|@lAz@LdAm@z@kA\\{@NkAm@wDm@gD]iB?{AT}@jQmTfIxBvIbQ`ChBdExBfDvDrKpRpWpf@zKnSp{@|hAlZdY~\\hl@lO~Rx`AroAMbGWzK\\rEb\\fc@`Cl@fCOdKiBhCOpBl@zAzAlN`SfJdOts@l~@v]dc@jAlAfN~HbGhBhBxBbLbQ|D~HzAfElJbFhH|IdP|UpRlTxGpG`RbRpGpQfh@bf@vm@xk@hq@tn@ld@ha@vSrP|DjBfIz@z@N`DhBvChC`MhM|EdErt@pq@`BhBvNdPfNtO|EdEdEhBpBtEfEzKzZfn@pLlT~N`]n]x_AfY|}@jAlK]hWfChLtE~InNxV`X`g@lJ|^bGxb@vMpeAzKx`A|Jpp@pW~r@dYj_ApHpQ~Wxa@{JfNePlUt@jAbAzArFdOxR|^pk@vaAtJ~S~Nb[r_@rdAzQ|i@n]tlA`g@bzArUvv@lJro@xHzVxa@j~AtNnr@rB|Sb[txA`Mzi@jUfmAjLlh@~M~^hMpf@rFrZdKtZzKb[tItc@nJ~]xQ|i@bL~SjFtNnD~S~C|JpBjKlElJxGpHfDtOpMdO~HtOlUzu@tOre@tOha@dZls@|Xxk@p_BrlClUhXvNvWvl@`fAfTl_@v\\l_@bLlJxeAl~@n|@vaA|i@n|@dZnr@jj@f`Bvw@`nCpg@`oB|]dxA~]tlAp]ngArd@pzAfh@lfB`Ihl@lJ`SnRzt@t@zAxBj@jBkAl@]lTuO]cG_@wC^m@j@]t@l@NhBr@vDbLz_@jQbf@li@dmAzVnr@jd@fbAnTha@vzA`bDzKtZ~Shk@bQhl@fDvNrFbPd@fEGfCe@hC?jA\\xB|@jAxBjAjAlAbAhBtEtOdFzVfCbPfIzVzGzUpp@xiBvHfN|EdOvCdF|EvCt@|@xAxAbGhMpCxC|ItDnDrFnDlJnSli@vCbQpBzVtJ|SlEjLdKfYfNdn@xLjVbFvNnIxVfTpq@z@rFdA`HyM{AqLNyGhBe@NcL`H}EpGOhBe@fEMxBGxBl@rEjFxWbBvNrAhMfHhl@rF|h@NfDbAlTt@jBtErE|DtEbB`HFxBxAvN|@dEhCdFpBbFTzAEhBu@jBeFbF{@jB]hByBxL?rGxBrZsA~zAhGflAFfDl@zK?|J{F`g@u@fD{AtDs@hCkBzUoChv@qC`HsE|UGtD}@fN{Ux`Ae@dE\\~IMrFyCpQuIdo@uEz_@yBnSyBxBGdPqCjL]nIbBnH]`g@r@`HjArPeErGjAjKs@jAsKpR{A]u@}@eK}IwC?_DbF_DdFsAjAqBOeE]iC?cAjAe@bFeFd[FxB?xBWtDoH~S]vCDxBNfD|@bGd@fCfCfOdAlJ}@bFU|@gD`HwD|JUbQbAnS`CvWTfDs@vD_DfCmAfD?dFxC~RtEbQTjB`C`R~CvXbAjAl@OjBm@jFgN`B{@jB\\zKhMjArFjAvMu@nr@M`SWdP?fCFhCjBbF\\nILjLs@fN?xV?p{@kAlJ}PtnAyLvb@gNbe@yWn}@wCjKaRpq@WrEVpHFvC_@hCeD`HwNvl@aHhb@W~SlFpz@G~IeK|s@qGn|@}@n]cAhM?rF`CrQyBn]OrPpBpRE|JaMha@wXz_AmPnq@uErQyBdEs@xBe@`Hm@jLdEb[hGre@d@n]sFn{AeJngA}Jl_@mJtN}^d[oN`GgYxk@eEbf@wC`]cBdmAyBdP_DhLkPlUiChMGzJl@vaAm@hXyLbF}DtOsFrQwDbGyRrZuN~RcQnT}EpG}I~Su@xBqC~HeEdO_D~]cA`|@?dEm@tZG`\\aBxrCcf@`HeZ{@hH||Ad@`RjAx`@|Eb{@bFrdAjFrmArGboAhB~h@d@li@gC~fAkBfkA{@to@eAro@UnHwClsA{BnpAs@n^m@n]{Afm@{Ah`AUlKaCjsAUtEe@vX{AlhAWpHUlJaCx_AsA~g@OpHqBlhA?bGkAbo@O`HqBpeAG`Hm@vb@?fc@FdEbB~{ANnIr@~q@V|ThBp{@VtEr@bp@|@rz@bAlgAbAhv@rAb{@vDb`Dhl@iLti@mKDnh@wCdP{e@~zAaBjVz@dn@rLn{AhBtO?`IiBzKql@|pBwHfOeK|Iom@vNmOvCkGfDeDfDsa@zj@ur@zhA{Vre@gb@l~@qMlToIrQwg@|qAkLja@oH`\\sAxL}@xMu@jLsApQsAzKaB|JyLnh@q]zrA_Ide@qHxk@e@vCs@lKG`G?vDz@~H`HfXt@dFNtEGdEm@zKsAhLmOnqAkAnTm@|IqB`g@OvNTrPt@ju@O|^yAry@LjLl@lJbB|JnC|IdKlUjFvNvCbPxC|^xAxMrB~HlExLnIlU~BxLzA|JjArFvYnqArEfN`HjLdFfC|NNjVwC~Hl@fJz@jVpGnRhMhMfNxLjWhHrZlJvb@nN`g@{uCbz@oIqGwS|JiR~HcALkVlAkLz@{A\\~CfE|@dEbAdExWhjA~CdPzAbGlEnSb[`zArUngAtcAjcFpRfbAfm@v~CbFfXjQhaA~Nvw@fNvv@rKxl@u@rExG~]gDyBl@vD`N`{@rPrdAbBwNlEhX`p@vrD`XbyAxWpzAd@fC`k@x}CbR~fAtOj_AkBzU|J~HfuBnyLrz@r_Fbo@tsDrFb\\wHnHTzAxHvb@fIre@{t@hW}~@xWrGjj@ms@pSiCxB?rFhCjUx`@pxCapAz`@ck@tOwl@pQwI{_@ye@dOi{Avc@i\\hL"}

I get an error that says

what(): ThorsAnvil::Serialize::UnicodeWrapperIterator::checkBuffer: input character can not be smaller than 0x20

I've tried removing some part of the string and inputing this smaller chunk of my shape in the console : {"shape": "offavAdqtekCsAcFhb@yW|SiMhH{AjLzAfb@lJld@jK~g@jLhScbCvRy~BxRu`C~Hk_A~Hi`AxRg_C~Rw`ChRi~Bh\\i|DpCo]|h@jBxRjAtYjApRvCrcBn]pBMlEz@tYrFdd@zK`h@pRbe@pRpf@b[re@~]dd@~]de@l_@ng@rd@zo@lj@vg@`f@hRtPnS`Rjf@fc@fh@dd@|h@be@ba@n^~a@j_@lcA~|@lo@xk@~g@td@fSkrBlZ|^vb@ng@vjBzsB`]rZ`b@xWveBdy@faAre@lvBvaArdAfb@fdDziAxQdFh`AhVts@bRpRrEtn@dPvDya@fD{_@bUrFbWbG`Gag@dF{Ath@bQti@bPf^nIbp@lJ|D^vNeFdK]lE?lYzApGxBxRvN`HhB`v@zAdELlZjA`q@nJ~g@fCz_AfDhu@|@bViMtP{AnS\\vX`Rf|@uDxdByLz~@iW~r@oThC]tEl@~BjA~C?~XaHnIeEvIsFpGiCvDN|Yfm@lOxVrPxCtZ_@p[{Jj\\mKfDkAf]kL~HwCp\\wMze@yMtd@sPpLeEhl@cR~w@iVrZmJ|O}@`XiBlOL~HrGt_@~H|OtEfItD~CxBlOlKbcBpyAvr@dn@dPvNn{@ls@vx@`r@zt@bo@fb@p]pa@p\\ze@ha@fgAl~@hW|S`xCpdCdo@|h@fh@vb@jKnIld@~]`g@|^ld@hXbe@hW|d@zUdi@~Sj`@fM`Cl@zA^vMdD|i@hN|}@jUfCl@jLvCtJxBgD`I~Cz@rQtEvw@pR~zAn]rtA`]vHvCrAdEvCdE|EvDhHbFlc@p\\hMrG`RdOxRrP~C|@dFhCvCdEfCxBlAzAdE|S~CdEtExCzU~HpQfN|UfNlE|@dE}@rK}IzFkAnDlIpBhCrPfOfIlIzFdFpBfD|@fD`BxBz[|SrQfEtDhBtOdOvDlAvRbFtK|JrFtDtTnI|N|J`CjArKbGzL`HfMfCjGhC~NtObK|IxHdFdT`HdELdJyAnDLfItEdErFNNhHfNfDvCnCxBlKtEzJjAlEjAfEvDpLdPro@vb@tOrPfN~HlFzAdEO~CkAvIiMxGyBzK`Iz@hBNhB_EjWNtDjAhCnYdObFdEbAxBNxBe@`IOtD^dEr@xBdAlAvCj@dE?|E]pByBnCcFjByBbFkBvIMjFxAzj@nT|hApf@pQhMnTjKtx@de@zEz@|JzAlEhBzZvXvTzLnRpQlPpHrFm@lJsFtEjAtEtEr@lT`IpRzJnIlOhM|d@lTfYj`@zPjUzPpHtYzV|OvMxa@fXxL]rKkA|ExBfDfDpG~HnIpGhRnIjPtE`IdEtc@hM~HhCxpAz`@jPzJh]b[dEzAjVkAtTzAfc@tEfh@rFtc@fN|JkAhGiCxC|@hBpG|EdEjFdEhHNfDkB|DlAfDz@pBdEzFvDbGm@zA\\|NvDvNpGrFdEdUpHdYbGhNxAhVfDfJ]xGl@bFvClEdF~DxArE^|O?lJxAbGhCtJvD~CvCxBrFp{@fvAjAjA~DlAvCtDzcA~|@jV~SxBsG`MzKdPfNbFdFrBzAjAz@~CvCdJ~InYvXri@pf@~CvC~c@l_@jV~SjKjKz@l@tJ~Ij[b[zAzAhWdYlJfNtJtOhW~]FN~HlJzPtOrAjAfYzV~XjU~MxL~w@pq@nChCbVlTlU|Td@{Ad@kAf^ecA~R{j@zFaGzFgO|@|@nCcG`HuYbAsGt@eEvDuNrAoJj@aHpC}StD{Ll@wCrGsZbAgDl@kBxW}qA~CeZnIqg@xB{J|h@zUj`@dP`{Atn@|IdEvb@~R`MrFdAl@\\NbnAzt@ld@rPlEjAzA^|^lJpb@zJtNfEtUdEvHl@bu@?dE?jBOfh@iC|bAoRfNgEn^sPzy@oItE^xBpGhB_JjAyArA?xRj@|DNhC|@zAjAth@zApk@xBlELnD{@dFkB~CgDd@{KT_It@wCbBkBbA]z@?jBNvCxB`CxBN\\DzAFdENzA\\z@bA^|@?pf@`Hhg@lItrA|TrAjBl@tEtDzi@FvDbAhl@t@fl@|@vc@tJl@`BiCF{U\\wCzA}@jLzAry@nHjFdFhRdd@l@zAdE`GhCxBjLjW~Wro@bBnIhB~Hf^`{@zAlJLl@jAdFvIjUnNb\\n^n{@`\\pq@|D~SNl@Nl@~BhLNjAt@hCdi@pfArAxAl@^`BLrBM~RgD|@\\j@jA|@fD|EbQjZvl@t@zAnIrQ~HfXpBrFpCrFl@hC~ChL`C~I`BtD|@lAz@LdAm@z@kA\\{@NkAm@wDm@gD]iB?{AT}@jQmTfIxBvIbQ`ChBdExBfDvDrKpRpWpf@zKnSp{@|hAlZdY~\\hl@lO~Rx`AroAMbGWzK\\rEb\\fc@`Cl@fCOdKiBhCOpBl@zAzAlN`SfJdOts@l~@v]dc@jAlAfN~HbGhBhBxBbLbQ|D~HzAfElJbFhH|IdP|UpRlTxGpG`RbRpGpQfh@bf@vm@xk@hq@tn@ld@ha@vSrP|DjBfIz@z@N`DhBvChC`MhM|EdErt@pq@`BhBvNdPfNtO|EdEdEhBpBtEfEzKzZfn@pLlT~N`]n]x_AfY|}@jAlK]hWfChLtE~InNxV`X`g@lJ|^bGxb@vMpeAzKx`A|Jpp@pW~r@dYj_ApHpQ~Wxa@{JfNePlUt@jAbAzArFdOxR|^pk@vaAtJ~S~Nb[r_@rdAzQ|i@n]tlA`g@bzArUvv@lJro@xHzVxa@j~AtNnr@rB|Sb[txA`Mzi@jUfmAjLlh@~M~^hMpf@rFrZdKtZzKb[tItc@nJ~]xQ|i@bL~SjFtNnD~S~C|JpBjKlElJxGpHfDtOpMdO~HtOlUzu@tOre@tOha@dZls@|Xxk@p_BrlClUhXvNvWvl@`fAfTl_@v\\l_@bLlJxeAl~@n|@vaA|i@n|@dZnr@jj@f`Bvw@`nCpg@`oB|]dxA~]tlAp]ngArd@pzAfh@lfB`Ihl@lJ`SnRzt@t@zAxBj@jBkAl@]lTuO]cG_@wC^m@j@]t@l@NhBr@vDbLz_@jQbf@li@dmAzVnr@jd@fbAnTha@vzA`bDzKtZ~Shk@bQhl@fDvNrFbPd@fEGfCe@hC?jA\\xB|@jAxBjAjAlAbAhBtEtOdFzVfCbPfIzVzGzUpp@xiBvHfN|EdOvCdF|EvCt@|@xAxAbGhMpCxC|ItDnDrFnDlJnSli@vCbQpBzVtJ|SlEjLdKfYfNdn@xLjVbFvNnIxVfTpq@z@rFdA`HyM{AqLNyGhBe@NcL`H}EpGOhBe@fEMxBGxBl@rEjFxWbBvNrAhMfHhl@rF|h@NfDbAlTt@jBtErE|DtEbB`HFxBxAvN|@dEhCdFpBbFTzAEhBu@jBeFbF{@jB]hByBxL?rGxBrZsA~zAhGflAFfDl@zK?|J{F`g@u@fD{AtDs@hCkBzUoChv@qC`HsE|UGtD}@fN{Ux`Ae@dE\\~IMrFyCpQuIdo@uEz_@yBnSyBxBGdPqCjL]nIbBnH]`g@r@`HjArPeErGjAjKs@jAsKpR{A]u@}@eK}IwC?_DbF_DdFsAjAqBOeE]iC?cAjAe@bFeFd[FxB?xBWtDoH~S]vCDxBNfD|@bGd@fCfCfOdAlJ}@bFU|@gD`HwD|JUbQbAnS`CvWTfDs@vD_DfCmAfD?dFxC~RtEbQTjB`C`R~CvXbAjAl@OjBm@jFgN`B{@jB\\zKhMjArFjAvMu@nr@M`SWdP?fCFhCjBbF\\nILjLs@fN?xV?p{@kAlJ}PtnAyLvb@gNbe@yWn}@wCjKaRpq@WrEVpHFvC_@hCeD`HwNvl@aHhb@W~SlFpz@G~IeK|s@qGn|@}@n]cAhM?rF`CrQyBn]OrPpBpRE|JaMha@wXz_AmPnq@uErQyBdEs@xBe@`Hm@jLdEb[hGre@d@n]sFn{AeJngA}Jl_@mJtN}^d[oN`GgYxk@eEbf@wC`]cBdmAyBdP_DhLkPlUiChMGzJl@vaAm@hXyLbF}DtOsFrQwDbGyRrZuN~RcQnT}EpG}I~Su@xBqC~HeEdO_D~]cA`|@?dEm@tZG`\\aBxrCcf@`HeZ{@hH||Ad@`RjAx`@|Eb{@bFrdAjFrmArGboAhB~h@d@li@gC~fAkBfkA{@to@eAro"}

And no error is thrown and I can see the output on the console of the Export in json of the object.

I need help figuring out what's happening when I input the entire string of my shape. I've checked with a JSON lint and it says my json is valid.

Thank you! `

rk commented 5 years ago

@isasmarthalo Please use code fencing to ensure your code is properly displayed. Otherwise every @ could turn into a mention—that's how I was notified. No telling who else got a mention.

You can indent 4 spaces:

    // your code here

Or you can use 3 backticks for code fencing:

```
// your code here
```
fd commented 5 years ago

@rk thanks. we seem to have a similar problem with @mentions :joy:

Loki-Astari commented 5 years ago

Hi. Can you create a file with the input so I can run it locally.

Loki-Astari commented 5 years ago

This error you specify:

what(): ThorsAnvil::Serialize::UnicodeWrapperIterator::checkBuffer: input character can not be smaller than 0x20

Is generated when the character string contains characters less than 0x20 (ie less than a space). i.e. you have control characters in a string between the quotes: " <Stuff In Here> ".

This is because the JSON specification does not allow RAW characters less than this inside a string. See: https://www.json.org/ You can of course escape characters less than 0x20. i.e \t for a tab or explicitly \u<4 digit hex code>.

    string:        '"'   <characters>    '"'
    characters:    ''
               |   <character> <characters>
    characters:    [0x0020 - 0x10fff] (minus two character    '"'  and  '\'   )
               |   '\' <escape>
    escape:        '"'
               |   '\'
               |   '/'
               |   'b'
               |   'n'
               |   'r'
               |   't'
               |   'u' <hex> <hex> <hex> <hex>

So this is a valid response to invalid JSON input.
Unfortunately the web page has converted any control characters you may have copied from your terminal into printable characters so it is hard for me to work out the exact problem above. But I would guess that the problem is caused by imbedded newline or tab inside a string literal.

Loki-Astari commented 5 years ago

If you post the exact json into a gist so I can copy the file locally and run it through your program I could potentially find an exact reason.

Loki-Astari commented 5 years ago

I've checked with a JSON lint and it says my json is valid.

If you are talking about the web site: https://jsonlint.com/ then it is probably having the same problems as github in the control characters are not getting pasted correctly.

Can you reproduce the behavior with jq?

Notice the JSON below contains an illegal newline character inside the string literal:

> cat x.json
{
    "shape": "
    "
}
> cat x.json | jq
parse error: Invalid string: control characters from U+0000 through U+001F must be escaped at line 3, column 5
isasmarthalo commented 5 years ago

Ok I think I understand what your saying with the line returns. I'll have to get some new raw inputs to be sure of how my string looks like without the encoding that happened afterwards it would seem so.

isasmarthalo commented 5 years ago

Hello here is my gist https://gist.github.com/isasmarthalo/3c5727ea070878be4c9800a30deb84d7

Loki-Astari commented 5 years ago

That did not work:

> wget https://gist.github.com/isasmarthalo/3c5727ea070878be4c9800a30deb84d7/archive/0d641558c0e2251d030107a6a852b3d9d543328c.zip
> unzip 0d641558c0e2251d030107a6a852b3d9d543328c.zip
> cd 3c5727ea070878be4c9800a30deb84d7-0d641558c0e2251d030107a6a852b3d9d543328c
> cat test_shape.json | jq
{
  "shape": "offavAdqtekCsAcFhb@yW|SiMhH{AjLzAfb@lJld@jK~g@jLhScbCvRy~BxRu`C~Hk_A~Hi`AxRg_C~Rw`ChRi~Bh\\i|DpCo]|h@jBxRjAtYjApRvCrcBn]pBMlEz@tYrFdd@zK`h@pRbe@pRpf@b[re@~]dd@~]de@l_@ng@rd@zo@lj@vg@`f@hRtPnS`Rjf@fc@fh@dd@|h@be@ba@n^~a@j_@lcA~|@lo@xk@~g@td@fSkrBlZ|^vb@ng@vjBzsB`]rZ`b@xWveBdy@faAre@lvBvaArdAfb@fdDziAxQdFh`AhVts@bRpRrEtn@dPvDya@fD{_@bUrFbWbG`Gag@dF{Ath@bQti@bPf^nIbp@lJ|D^vNeFdK]lE?lYzApGxBxRvN`HhB`v@zAdELlZjA`q@nJ~g@fCz_AfDhu@|@bViMtP{AnS\\vX`Rf|@uDxdByLz~@iW~r@oThC]tEl@~BjA~C?~XaHnIeEvIsFpGiCvDN|Yfm@lOxVrPxCtZ_@p[{Jj\\mKfDkAf]kL~HwCp\\wMze@yMtd@sPpLeEhl@cR~w@iVrZmJ|O}@`XiBlOL~HrGt_@~H|OtEfItD~CxBlOlKbcBpyAvr@dn@dPvNn{@ls@vx@`r@zt@bo@fb@p]pa@p\\ze@ha@fgAl~@hW|S`xCpdCdo@|h@fh@vb@jKnIld@~]`g@|^ld@hXbe@hW|d@zUdi@~Sj`@fM`Cl@zA^vMdD|i@hN|}@jUfCl@jLvCtJxBgD`I~Cz@rQtEvw@pR~zAn]rtA`]vHvCrAdEvCdE|EvDhHbFlc@p\\hMrG`RdOxRrP~C|@dFhCvCdEfCxBlAzAdE|S~CdEtExCzU~HpQfN|UfNlE|@dE}@rK}IzFkAnDlIpBhCrPfOfIlIzFdFpBfD|@fD`BxBz[|SrQfEtDhBtOdOvDlAvRbFtK|JrFtDtTnI|N|J`CjArKbGzL`HfMfCjGhC~NtObK|IxHdFdT`HdELdJyAnDLfItEdErFNNhHfNfDvCnCxBlKtEzJjAlEjAfEvDpLdPro@vb@tOrPfN~HlFzAdEO~CkAvIiMxGyBzK`Iz@hBNhB_EjWNtDjAhCnYdObFdEbAxBNxBe@`IOtD^dEr@xBdAlAvCj@dE?|E]pByBnCcFjByBbFkBvIMjFxAzj@nT|hApf@pQhMnTjKtx@de@zEz@|JzAlEhBzZvXvTzLnRpQlPpHrFm@lJsFtEjAtEtEr@lT`IpRzJnIlOhM|d@lTfYj`@zPjUzPpHtYzV|OvMxa@fXxL]rKkA|ExBfDfDpG~HnIpGhRnIjPtE`IdEtc@hM~HhCxpAz`@jPzJh]b[dEzAjVkAtTzAfc@tEfh@rFtc@fN|JkAhGiCxC|@hBpG|EdEjFdEhHNfDkB|DlAfDz@pBdEzFvDbGm@zA\\|NvDvNpGrFdEdUpHdYbGhNxAhVfDfJ]xGl@bFvClEdF~DxArE^|O?lJxAbGhCtJvD~CvCxBrFp{@fvAjAjA~DlAvCtDzcA~|@jV~SxBsG`MzKdPfNbFdFrBzAjAz@~CvCdJ~InYvXri@pf@~CvC~c@l_@jV~SjKjKz@l@tJ~Ij[b[zAzAhWdYlJfNtJtOhW~]FN~HlJzPtOrAjAfYzV~XjU~MxL~w@pq@nChCbVlTlU|Td@{Ad@kAf^ecA~R{j@zFaGzFgO|@|@nCcG`HuYbAsGt@eEvDuNrAoJj@aHpC}StD{Ll@wCrGsZbAgDl@kBxW}qA~CeZnIqg@xB{J|h@zUj`@dP`{Atn@|IdEvb@~R`MrFdAl@\\NbnAzt@ld@rPlEjAzA^|^lJpb@zJtNfEtUdEvHl@bu@?dE?jBOfh@iC|bAoRfNgEn^sPzy@oItE^xBpGhB_JjAyArA?xRj@|DNhC|@zAjAth@zApk@xBlELnD{@dFkB~CgDd@{KT_It@wCbBkBbA]z@?jBNvCxB`CxBN\\DzAFdENzA\\z@bA^|@?pf@`Hhg@lItrA|TrAjBl@tEtDzi@FvDbAhl@t@fl@|@vc@tJl@`BiCF{U\\wCzA}@jLzAry@nHjFdFhRdd@l@zAdE`GhCxBjLjW~Wro@bBnIhB~Hf^`{@zAlJLl@jAdFvIjUnNb\\n^n{@`\\pq@|D~SNl@Nl@~BhLNjAt@hCdi@pfArAxAl@^`BLrBM~RgD|@\\j@jA|@fD|EbQjZvl@t@zAnIrQ~HfXpBrFpCrFl@hC~ChL`C~I`BtD|@lAz@LdAm@z@kA\\{@NkAm@wDm@gD]iB?{AT}@jQmTfIxBvIbQ`ChBdExBfDvDrKpRpWpf@zKnSp{@|hAlZdY~\\hl@lO~Rx`AroAMbGWzK\\rEb\\fc@`Cl@fCOdKiBhCOpBl@zAzAlN`SfJdOts@l~@v]dc@jAlAfN~HbGhBhBxBbLbQ|D~HzAfElJbFhH|IdP|UpRlTxGpG`RbRpGpQfh@bf@vm@xk@hq@tn@ld@ha@vSrP|DjBfIz@z@N`DhBvChC`MhM|EdErt@pq@`BhBvNdPfNtO|EdEdEhBpBtEfEzKzZfn@pLlT~N`]n]x_AfY|}@jAlK]hWfChLtE~InNxV`X`g@lJ|^bGxb@vMpeAzKx`A|Jpp@pW~r@dYj_ApHpQ~Wxa@{JfNePlUt@jAbAzArFdOxR|^pk@vaAtJ~S~Nb[r_@rdAzQ|i@n]tlA`g@bzArUvv@lJro@xHzVxa@j~AtNnr@rB|Sb[txA`Mzi@jUfmAjLlh@~M~^hMpf@rFrZdKtZzKb[tItc@nJ~]xQ|i@bL~SjFtNnD~S~C|JpBjKlElJxGpHfDtOpMdO~HtOlUzu@tOre@tOha@dZls@|Xxk@p_BrlClUhXvNvWvl@`fAfTl_@v\\l_@bLlJxeAl~@n|@vaA|i@n|@dZnr@jj@f`Bvw@`nCpg@`oB|]dxA~]tlAp]ngArd@pzAfh@lfB`Ihl@lJ`SnRzt@t@zAxBj@jBkAl@]lTuO]cG_@wC^m@j@]t@l@NhBr@vDbLz_@jQbf@li@dmAzVnr@jd@fbAnTha@vzA`bDzKtZ~Shk@bQhl@fDvNrFbPd@fEGfCe@hC?jA\\xB|@jAxBjAjAlAbAhBtEtOdFzVfCbPfIzVzGzUpp@xiBvHfN|EdOvCdF|EvCt@|@xAxAbGhMpCxC|ItDnDrFnDlJnSli@vCbQpBzVtJ|SlEjLdKfYfNdn@xLjVbFvNnIxVfTpq@z@rFdA`HyM{AqLNyGhBe@NcL`H}EpGOhBe@fEMxBGxBl@rEjFxWbBvNrAhMfHhl@rF|h@NfDbAlTt@jBtErE|DtEbB`HFxBxAvN|@dEhCdFpBbFTzAEhBu@jBeFbF{@jB]hByBxL?rGxBrZsA~zAhGflAFfDl@zK?|J{F`g@u@fD{AtDs@hCkBzUoChv@qC`HsE|UGtD}@fN{Ux`Ae@dE\\~IMrFyCpQuIdo@uEz_@yBnSyBxBGdPqCjL]nIbBnH]`g@r@`HjArPeErGjAjKs@jAsKpR{A]u@}@eK}IwC?_DbF_DdFsAjAqBOeE]iC?cAjAe@bFeFd[FxB?xBWtDoH~S]vCDxBNfD|@bGd@fCfCfOdAlJ}@bFU|@gD`HwD|JUbQbAnS`CvWTfDs@vD_DfCmAfD?dFxC~RtEbQTjB`C`R~CvXbAjAl@OjBm@jFgN`B{@jB\\zKhMjArFjAvMu@nr@M`SWdP?fCFhCjBbF\\nILjLs@fN?xV?p{@kAlJ}PtnAyLvb@gNbe@yWn}@wCjKaRpq@WrEVpHFvC_@hCeD`HwNvl@aHhb@W~SlFpz@G~IeK|s@qGn|@}@n]cAhM?rF`CrQyBn]OrPpBpRE|JaMha@wXz_AmPnq@uErQyBdEs@xBe@`Hm@jLdEb[hGre@d@n]sFn{AeJngA}Jl_@mJtN}^d[oN`GgYxk@eEbf@wC`]cBdmAyBdP_DhLkPlUiChMGzJl@vaAm@hXyLbF}DtOsFrQwDbGyRrZuN~RcQnT}EpG}I~Su@xBqC~HeEdO_D~]cA`|@?dEm@tZG`\\aBxrCcf@`HeZ{@hH||Ad@`RjAx`@|Eb{@bFrdAjFrmArGboAhB~h@d@li@gC~fAkBfkA{@to@eAro@UnHwClsA{BnpAs@n^m@n]{Afm@{Ah`AUlKaCjsAUtEe@vX{AlhAWpHUlJaCx_AsA~g@OpHqBlhA?bGkAbo@O`HqBpeAG`Hm@vb@?fc@FdEbB~{ANnIr@~q@V|ThBp{@VtEr@bp@|@rz@bAlgAbAhv@rAb{@vDb`Dhl@iLti@mKDnh@wCdP{e@~zAaBjVz@dn@rLn{AhBtO?`IiBzKql@|pBwHfOeK|Iom@vNmOvCkGfDeDfDsa@zj@ur@zhA{Vre@gb@l~@qMlToIrQwg@|qAkLja@oH`\\sAxL}@xMu@jLsApQsAzKaB|JyLnh@q]zrA_Ide@qHxk@e@vCs@lKG`G?vDz@~H`HfXt@dFNtEGdEm@zKsAhLmOnqAkAnTm@|IqB`g@OvNTrPt@ju@O|^yAry@LjLl@lJbB|JnC|IdKlUjFvNvCbPxC|^xAxMrB~HlExLnIlU~BxLzA|JjArFvYnqArEfN`HjLdFfC|NNjVwC~Hl@fJz@jVpGnRhMhMfNxLjWhHrZlJvb@nN`g@{uCbz@oIqGwS|JiR~HcALkVlAkLz@{A\\~CfE|@dEbAdExWhjA~CdPzAbGlEnSb[`zArUngAtcAjcFpRfbAfm@v~CbFfXjQhaA~Nvw@fNvv@rKxl@u@rExG~]gDyBl@vD`N`{@rPrdAbBwNlEhX`p@vrD`XbyAxWpzAd@fC`k@x}CbR~fAtOj_AkBzU|J~HfuBnyLrz@r_Fbo@tsDrFb\\wHnHTzAxHvb@fIre@{t@hW}~@xWrGjj@ms@pSiCxB?rFhCjUx`@pxCapAz`@ck@tOwl@pQwI{_@ye@dOi{Avc@i\\hL"
}
> cat main.cpp
#include "ThorSerialize/Serialize.h"
#include "ThorSerialize/Serialize.tpp"
#include "ThorSerialize/Traits.h"
#include "ThorSerialize/JsonThor.h"
#include <string>
#include <sstream>
#include <iostream>
#include <vector>

using namespace std;

class ValhallaLeg {
    friend class ThorsAnvil::Serialize::Traits<ValhallaLeg>;
    private:
        string shape;
    public:
        ValhallaLeg(){};
        ~ValhallaLeg(){};
};

ThorsAnvil_MakeTrait(ValhallaLeg, shape);

int main()
{
    using ThorsAnvil::Serialize::jsonExport;
    using ThorsAnvil::Serialize::PrinterInterface;
    ValhallaLeg* result = nullptr;
    cin >> ThorsAnvil::Serialize::jsonImport(result);
    cout << ThorsAnvil::Serialize::jsonExport(result) << endl;

    return EXIT_SUCCESS;
}
> g++ -std=c++14 main.cpp -lThorSerialize17
> cat test_shape.json | ./a.out

    {
        "shape": "offavAdqtekCsAcFhb@yW|SiMhH{AjLzAfb@lJld@jK~g@jLhScbCvRy~BxRu`C~Hk_A~Hi`AxRg_C~Rw`ChRi~Bh\\i|DpCo]|h@jBxRjAtYjApRvCrcBn]pBMlEz@tYrFdd@zK`h@pRbe@pRpf@b[re@~]dd@~]de@l_@ng@rd@zo@lj@vg@`f@hRtPnS`Rjf@fc@fh@dd@|h@be@ba@n^~a@j_@lcA~|@lo@xk@~g@td@fSkrBlZ|^vb@ng@vjBzsB`]rZ`b@xWveBdy@faAre@lvBvaArdAfb@fdDziAxQdFh`AhVts@bRpRrEtn@dPvDya@fD{_@bUrFbWbG`Gag@dF{Ath@bQti@bPf^nIbp@lJ|D^vNeFdK]lE?lYzApGxBxRvN`HhB`v@zAdELlZjA`q@nJ~g@fCz_AfDhu@|@bViMtP{AnS\\vX`Rf|@uDxdByLz~@iW~r@oThC]tEl@~BjA~C?~XaHnIeEvIsFpGiCvDN|Yfm@lOxVrPxCtZ_@p[{Jj\\mKfDkAf]kL~HwCp\\wMze@yMtd@sPpLeEhl@cR~w@iVrZmJ|O}@`XiBlOL~HrGt_@~H|OtEfItD~CxBlOlKbcBpyAvr@dn@dPvNn{@ls@vx@`r@zt@bo@fb@p]pa@p\\ze@ha@fgAl~@hW|S`xCpdCdo@|h@fh@vb@jKnIld@~]`g@|^ld@hXbe@hW|d@zUdi@~Sj`@fM`Cl@zA^vMdD|i@hN|}@jUfCl@jLvCtJxBgD`I~Cz@rQtEvw@pR~zAn]rtA`]vHvCrAdEvCdE|EvDhHbFlc@p\\hMrG`RdOxRrP~C|@dFhCvCdEfCxBlAzAdE|S~CdEtExCzU~HpQfN|UfNlE|@dE}@rK}IzFkAnDlIpBhCrPfOfIlIzFdFpBfD|@fD`BxBz[|SrQfEtDhBtOdOvDlAvRbFtK|JrFtDtTnI|N|J`CjArKbGzL`HfMfCjGhC~NtObK|IxHdFdT`HdELdJyAnDLfItEdErFNNhHfNfDvCnCxBlKtEzJjAlEjAfEvDpLdPro@vb@tOrPfN~HlFzAdEO~CkAvIiMxGyBzK`Iz@hBNhB_EjWNtDjAhCnYdObFdEbAxBNxBe@`IOtD^dEr@xBdAlAvCj@dE?|E]pByBnCcFjByBbFkBvIMjFxAzj@nT|hApf@pQhMnTjKtx@de@zEz@|JzAlEhBzZvXvTzLnRpQlPpHrFm@lJsFtEjAtEtEr@lT`IpRzJnIlOhM|d@lTfYj`@zPjUzPpHtYzV|OvMxa@fXxL]rKkA|ExBfDfDpG~HnIpGhRnIjPtE`IdEtc@hM~HhCxpAz`@jPzJh]b[dEzAjVkAtTzAfc@tEfh@rFtc@fN|JkAhGiCxC|@hBpG|EdEjFdEhHNfDkB|DlAfDz@pBdEzFvDbGm@zA\\|NvDvNpGrFdEdUpHdYbGhNxAhVfDfJ]xGl@bFvClEdF~DxArE^|O?lJxAbGhCtJvD~CvCxBrFp{@fvAjAjA~DlAvCtDzcA~|@jV~SxBsG`MzKdPfNbFdFrBzAjAz@~CvCdJ~InYvXri@pf@~CvC~c@l_@jV~SjKjKz@l@tJ~Ij[b[zAzAhWdYlJfNtJtOhW~]FN~HlJzPtOrAjAfYzV~XjU~MxL~w@pq@nChCbVlTlU|Td@{Ad@kAf^ecA~R{j@zFaGzFgO|@|@nCcG`HuYbAsGt@eEvDuNrAoJj@aHpC}StD{Ll@wCrGsZbAgDl@kBxW}qA~CeZnIqg@xB{J|h@zUj`@dP`{Atn@|IdEvb@~R`MrFdAl@\\NbnAzt@ld@rPlEjAzA^|^lJpb@zJtNfEtUdEvHl@bu@?dE?jBOfh@iC|bAoRfNgEn^sPzy@oItE^xBpGhB_JjAyArA?xRj@|DNhC|@zAjAth@zApk@xBlELnD{@dFkB~CgDd@{KT_It@wCbBkBbA]z@?jBNvCxB`CxBN\\DzAFdENzA\\z@bA^|@?pf@`Hhg@lItrA|TrAjBl@tEtDzi@FvDbAhl@t@fl@|@vc@tJl@`BiCF{U\\wCzA}@jLzAry@nHjFdFhRdd@l@zAdE`GhCxBjLjW~Wro@bBnIhB~Hf^`{@zAlJLl@jAdFvIjUnNb\\n^n{@`\\pq@|D~SNl@Nl@~BhLNjAt@hCdi@pfArAxAl@^`BLrBM~RgD|@\\j@jA|@fD|EbQjZvl@t@zAnIrQ~HfXpBrFpCrFl@hC~ChL`C~I`BtD|@lAz@LdAm@z@kA\\{@NkAm@wDm@gD]iB?{AT}@jQmTfIxBvIbQ`ChBdExBfDvDrKpRpWpf@zKnSp{@|hAlZdY~\\hl@lO~Rx`AroAMbGWzK\\rEb\\fc@`Cl@fCOdKiBhCOpBl@zAzAlN`SfJdOts@l~@v]dc@jAlAfN~HbGhBhBxBbLbQ|D~HzAfElJbFhH|IdP|UpRlTxGpG`RbRpGpQfh@bf@vm@xk@hq@tn@ld@ha@vSrP|DjBfIz@z@N`DhBvChC`MhM|EdErt@pq@`BhBvNdPfNtO|EdEdEhBpBtEfEzKzZfn@pLlT~N`]n]x_AfY|}@jAlK]hWfChLtE~InNxV`X`g@lJ|^bGxb@vMpeAzKx`A|Jpp@pW~r@dYj_ApHpQ~Wxa@{JfNePlUt@jAbAzArFdOxR|^pk@vaAtJ~S~Nb[r_@rdAzQ|i@n]tlA`g@bzArUvv@lJro@xHzVxa@j~AtNnr@rB|Sb[txA`Mzi@jUfmAjLlh@~M~^hMpf@rFrZdKtZzKb[tItc@nJ~]xQ|i@bL~SjFtNnD~S~C|JpBjKlElJxGpHfDtOpMdO~HtOlUzu@tOre@tOha@dZls@|Xxk@p_BrlClUhXvNvWvl@`fAfTl_@v\\l_@bLlJxeAl~@n|@vaA|i@n|@dZnr@jj@f`Bvw@`nCpg@`oB|]dxA~]tlAp]ngArd@pzAfh@lfB`Ihl@lJ`SnRzt@t@zAxBj@jBkAl@]lTuO]cG_@wC^m@j@]t@l@NhBr@vDbLz_@jQbf@li@dmAzVnr@jd@fbAnTha@vzA`bDzKtZ~Shk@bQhl@fDvNrFbPd@fEGfCe@hC?jA\\xB|@jAxBjAjAlAbAhBtEtOdFzVfCbPfIzVzGzUpp@xiBvHfN|EdOvCdF|EvCt@|@xAxAbGhMpCxC|ItDnDrFnDlJnSli@vCbQpBzVtJ|SlEjLdKfYfNdn@xLjVbFvNnIxVfTpq@z@rFdA`HyM{AqLNyGhBe@NcL`H}EpGOhBe@fEMxBGxBl@rEjFxWbBvNrAhMfHhl@rF|h@NfDbAlTt@jBtErE|DtEbB`HFxBxAvN|@dEhCdFpBbFTzAEhBu@jBeFbF{@jB]hByBxL?rGxBrZsA~zAhGflAFfDl@zK?|J{F`g@u@fD{AtDs@hCkBzUoChv@qC`HsE|UGtD}@fN{Ux`Ae@dE\\~IMrFyCpQuIdo@uEz_@yBnSyBxBGdPqCjL]nIbBnH]`g@r@`HjArPeErGjAjKs@jAsKpR{A]u@}@eK}IwC?_DbF_DdFsAjAqBOeE]iC?cAjAe@bFeFd[FxB?xBWtDoH~S]vCDxBNfD|@bGd@fCfCfOdAlJ}@bFU|@gD`HwD|JUbQbAnS`CvWTfDs@vD_DfCmAfD?dFxC~RtEbQTjB`C`R~CvXbAjAl@OjBm@jFgN`B{@jB\\zKhMjArFjAvMu@nr@M`SWdP?fCFhCjBbF\\nILjLs@fN?xV?p{@kAlJ}PtnAyLvb@gNbe@yWn}@wCjKaRpq@WrEVpHFvC_@hCeD`HwNvl@aHhb@W~SlFpz@G~IeK|s@qGn|@}@n]cAhM?rF`CrQyBn]OrPpBpRE|JaMha@wXz_AmPnq@uErQyBdEs@xBe@`Hm@jLdEb[hGre@d@n]sFn{AeJngA}Jl_@mJtN}^d[oN`GgYxk@eEbf@wC`]cBdmAyBdP_DhLkPlUiChMGzJl@vaAm@hXyLbF}DtOsFrQwDbGyRrZuN~RcQnT}EpG}I~Su@xBqC~HeEdO_D~]cA`|@?dEm@tZG`\\aBxrCcf@`HeZ{@hH||Ad@`RjAx`@|Eb{@bFrdAjFrmArGboAhB~h@d@li@gC~fAkBfkA{@to@eAro@UnHwClsA{BnpAs@n^m@n]{Afm@{Ah`AUlKaCjsAUtEe@vX{AlhAWpHUlJaCx_AsA~g@OpHqBlhA?bGkAbo@O`HqBpeAG`Hm@vb@?fc@FdEbB~{ANnIr@~q@V|ThBp{@VtEr@bp@|@rz@bAlgAbAhv@rAb{@vDb`Dhl@iLti@mKDnh@wCdP{e@~zAaBjVz@dn@rLn{AhBtO?`IiBzKql@|pBwHfOeK|Iom@vNmOvCkGfDeDfDsa@zj@ur@zhA{Vre@gb@l~@qMlToIrQwg@|qAkLja@oH`\\sAxL}@xMu@jLsApQsAzKaB|JyLnh@q]zrA_Ide@qHxk@e@vCs@lKG`G?vDz@~H`HfXt@dFNtEGdEm@zKsAhLmOnqAkAnTm@|IqB`g@OvNTrPt@ju@O|^yAry@LjLl@lJbB|JnC|IdKlUjFvNvCbPxC|^xAxMrB~HlExLnIlU~BxLzA|JjArFvYnqArEfN`HjLdFfC|NNjVwC~Hl@fJz@jVpGnRhMhMfNxLjWhHrZlJvb@nN`g@{uCbz@oIqGwS|JiR~HcALkVlAkLz@{A\\~CfE|@dEbAdExWhjA~CdPzAbGlEnSb[`zArUngAtcAjcFpRfbAfm@v~CbFfXjQhaA~Nvw@fNvv@rKxl@u@rExG~]gDyBl@vD`N`{@rPrdAbBwNlEhX`p@vrD`XbyAxWpzAd@fC`k@x}CbR~fAtOj_AkBzU|J~HfuBnyLrz@r_Fbo@tsDrFb\\wHnHTzAxHvb@fIre@{t@hW}~@xWrGjj@ms@pSiCxB?rFhCjUx`@pxCapAz`@ck@tOwl@pQwI{_@ye@dOi{Avc@i\\hL"
    }
isasmarthalo commented 5 years ago

You didn't get the error? So the error might just appear from my text editor when I copy paste manually the json into the console.

Loki-Astari commented 5 years ago

You are going to have to upload the file without "cutting and pasting into web page".

When the data is printed to a terminal any control characters are converted into printable characters. When you then copy and paste the data into a web form all we are seeing is the printable characters.

You will need to capture your raw data in a file. Then upload the file to the gist so that the raw data is intact.

Loki-Astari commented 5 years ago

I assume the data is coming from another program?

Then just output that data to a file rather than send it to your program.

isasmarthalo commented 5 years ago

Currently as my gist is, there was no problem with importing the json to the c++ object?

Loki-Astari commented 5 years ago

Can you save the raw data from the original source?
Just tried with gist and could not easily get it to work.
You may have to create a github repo and upload the file there.

Remember: Do NOT use cut and paste. This will destroy any control characters. You have to get the RAW data into a file and upload that directly.

Loki-Astari commented 5 years ago

This is the easiest way I have found to escape JSON strings.

> cat test2.json | jq -aR . | sed -e 's/\\"/"/g' -e 's/^"\(.*\)"$/\1/' | jq

Both jq and sed are standard bash tools.
In this example test2.json is the file that contains my raw characters.

{
  "shape": "00\u000001\u000102\u000203\u000304\u000405\u000506\u000607\u000708\b09\t0A\u00000B\u000b0C\f0D\r0E\u000e0F\u000f10\u001011\u001112\u001213\u001314\u001415\u001516\u001617\u001718\u001819\u00191A\u001a1B\u001b1C\u001c1D\u001d1E\u001e1F\u001f"
}

Note 1: The problem here is that you have invalid JSON and we are trying to work around the problem.
Note 2: You should now be able to spot your bad characters as they will start with \u00xx.

Loki-Astari commented 5 years ago

You didn't get the error? So the error might just appear from my text editor when I copy paste manually the json into the console.

Don't cut and paste code. Stream the file into the application.

If the data is in file.json and you have compiled the ThorsSerializer application to a.out. Then you can simply use:

cat file.json | ./a.out

That should work.

Loki-Astari commented 5 years ago

Worth a read:

https://unix.stackexchange.com/q/508578/1165

isasmarthalo commented 5 years ago

Hello thanks a lot for all your answers! I will verify all of this on wednesday morning and I'll get back to you!

isasmarthalo commented 5 years ago

@Loki-Astari Thanks a lot for all your help. I did as you recommended and streamed the direct raw output of the json to my program and did not copy paste and it worked :smile: Im closing the issue now!