diff --git a/ejson/Number.cpp b/ejson/Number.cpp index df71285..f78bcfc 100644 --- a/ejson/Number.cpp +++ b/ejson/Number.cpp @@ -26,8 +26,9 @@ bool ejson::Number::IParse(const etk::UString& _data, int32_t& _pos, ejson::file if(true==CheckNumber(_data[iii])) { tmpVal+=_data[iii]; } else { - _pos = iii; + _pos = iii-1; m_value = tmpVal.ToDouble(); + JSON_PARSE_ELEMENT("end parse : 'Number' "); return true; } } diff --git a/ejson/Object.cpp b/ejson/Object.cpp index c70526d..e84228c 100644 --- a/ejson/Object.cpp +++ b/ejson/Object.cpp @@ -206,9 +206,44 @@ bool ejson::Object::IParse(const etk::UString& _data, int32_t& _pos, ejson::file } bool ejson::Object::IGenerate(etk::UString& _data, int32_t _indent) const { - _data += "{\n"; + bool oneLine=true; + if (m_value.Size()>3) { + oneLine=false; + } else { + for (esize_t iii=0; iiiIsObject()) { + oneLine=false; + break; + } + if (true==tmp->IsArray()) { + oneLine=false; + break; + } + if (true==tmp->IsString()) { + ejson::String* tmp2 = tmp->ToString(); + if (NULL!=tmp2) { + if (tmp2->GetValue().Size()>50) { + oneLine=false; + break; + } + } + } + } + } + + if (false==oneLine) { + _data += "{\n"; + } else { + _data += "{ "; + } for (esize_t iii=0; iii