/ Serialize a JSON Value. */ /
| 1007 | /* Serialize a JSON Value. */ |
| 1008 | /***********************************************************************/ |
| 1009 | bool JDOC::SerializeValue(PJVAL jvp) |
| 1010 | { |
| 1011 | char buf[64]; |
| 1012 | PJAR jap; |
| 1013 | PJOB jop; |
| 1014 | //PVL vlp; |
| 1015 | |
| 1016 | if ((jap = jvp->GetArray())) |
| 1017 | return SerializeArray(jap, false); |
| 1018 | else if ((jop = jvp->GetObject())) |
| 1019 | return SerializeObject(jop); |
| 1020 | //else if (!(vlp = jvp->Val)) |
| 1021 | // return js->WriteStr("null"); |
| 1022 | else switch (jvp->DataType) { |
| 1023 | case TYPE_BOOL: |
| 1024 | return js->WriteStr(jvp->B ? "true" : "false"); |
| 1025 | case TYPE_STRG: |
| 1026 | case TYPE_DTM: |
| 1027 | return js->Escape(jvp->Strp); |
| 1028 | case TYPE_INTG: |
| 1029 | snprintf(buf, sizeof(buf), "%d", jvp->N); |
| 1030 | return js->WriteStr(buf); |
| 1031 | case TYPE_BINT: |
| 1032 | snprintf(buf, sizeof(buf), "%lld", jvp->LLn); |
| 1033 | return js->WriteStr(buf); |
| 1034 | case TYPE_DBL: // dfp to limit to the default number of decimals |
| 1035 | snprintf(buf, sizeof(buf), "%.*f", MY_MIN(jvp->Nd, dfp), jvp->F); |
| 1036 | return js->WriteStr(buf); |
| 1037 | case TYPE_NULL: |
| 1038 | return js->WriteStr("null"); |
| 1039 | default: |
| 1040 | return js->WriteStr("???"); // TODO |
| 1041 | } // endswitch Type |
| 1042 | |
| 1043 | strcpy(js->g->Message, "Unrecognized value"); |
| 1044 | return true; |
| 1045 | } // end of SerializeValue |
| 1046 | |
| 1047 | /* -------------------------- Class JOBJECT -------------------------- */ |
| 1048 |