aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/io.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-08-08 20:04:20 +0200
committerEven Rouault <even.rouault@spatialys.com>2019-08-09 13:22:25 +0200
commit89f2cc7ec4178a369e73e9cd115a2552a55d870a (patch)
treeb5a96d4248a0bb866477ed3c865fdb5648dc0a06 /src/iso19111/io.cpp
parentec49c9cd0aa9de24623920b8de226daf05a0e90f (diff)
downloadPROJ-89f2cc7ec4178a369e73e9cd115a2552a55d870a.tar.gz
PROJ-89f2cc7ec4178a369e73e9cd115a2552a55d870a.zip
PROJJSON export: use more compact form
Diffstat (limited to 'src/iso19111/io.cpp')
-rw-r--r--src/iso19111/io.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/iso19111/io.cpp b/src/iso19111/io.cpp
index 35798d9d..bb15c80a 100644
--- a/src/iso19111/io.cpp
+++ b/src/iso19111/io.cpp
@@ -8027,6 +8027,7 @@ struct JSONFormatter::Private {
std::vector<bool> stackHasId_{false};
std::vector<bool> outputIdStack_{true};
bool allowIDInImmediateChild_ = false;
+ bool omitTypeInImmediateChild_ = false;
std::string result_{};
@@ -8102,14 +8103,21 @@ void JSONFormatter::setAllowIDInImmediateChild() {
// ---------------------------------------------------------------------------
+void JSONFormatter::setOmitTypeInImmediateChild() {
+ d->omitTypeInImmediateChild_ = true;
+}
+
+// ---------------------------------------------------------------------------
+
JSONFormatter::ObjectContext::ObjectContext(JSONFormatter &formatter,
const char *objectType, bool hasId)
: m_formatter(formatter) {
m_formatter.d->writer_.StartObj();
- if (objectType) {
+ if (objectType && !m_formatter.d->omitTypeInImmediateChild_) {
m_formatter.d->writer_.AddObjKey("type");
m_formatter.d->writer_.Add(objectType);
}
+ m_formatter.d->omitTypeInImmediateChild_ = false;
// All intermediate nodes shouldn't have ID if a parent has an ID
// unless explicitly enabled.
if (m_formatter.d->allowIDInImmediateChild_) {