<div dir="ltr"><table cellpadding="0" class="gmail-cf gmail-An" id="gmail-undefined" style="width:1138.91px;table-layout:fixed;border-spacing:0px;font-family:"Google Sans",Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-size:16.8px"><tbody><tr><td class="gmail-Ap" style="width:1138.91px;vertical-align:top;height:100px"><div id="gmail-:vl" class="gmail-Ar gmail-Au" style="border-radius:1px;box-sizing:border-box;padding:0px 0px 16px;border:0px;margin:0px"><div class="gmail-aO7" style="position: relative;"></div></div></td></tr></tbody></table>Hi Nyall,<br>Thank you for the pointer to QgsJsonUtils I wasn't aware it was already in the codebase. I'll <b>switch the implementation plan to use nlohmann::json via QgsJsonUtils </b>throughout, dropping the Qt JSON classes plan entirely.<br>I can see that<b> QgsJsonUtils::exportAttributesToJsonObject() </b>would make the JSONFromAttributes algorithm significantly cleaner. I'll build that algorithm around it directly.<br><b>One follow-up question: for the read-side algorithms (LoadJSONFile, ExtractJSONValue, FlattenJSON, JSONToTable), the plan is to accept a JSON string as input and parse it internally using nlohmann::json::parse(). Is that the right approach, or are there existing QgsJsonUtils helpers on the read side I should be using instead?</b><br>I'll update the proposal to reflect the switch to <b>QgsJsonUtils</b> and <b>nlohmann</b>.<br>Kind regards,<br>Sionigdha</div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Wed, 18 Mar 2026 at 10:04, Nyall Dawson <<a href="mailto:nyall.dawson@gmail.com">nyall.dawson@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 18 Mar 2026 at 14:23, Sionigdha Sadhukhan <<a href="mailto:snigdha.lee75@gmail.com" target="_blank">snigdha.lee75@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Subject: Re: GSoC 2026 Draft Proposal : JSON Handling Toolkit for the QGIS Processing Framework<br><br>Hi Valentin,<br>Thank you for the detailed feedback it's very helpful, and thanks for guiding through.<br>The point about the two-headed proposal makes complete sense. I've already started reworking the proposal to make the JSON toolkit the clear centre of gravity. The ogrinfo typed parameter work is out I'm replacing those weeks with 2 additional JSON algorithms (JSONFromAttributes and MergeJSONArrays), bringing the total to 6 C++ algorithms that together cover the full JSON data lifecycle inside a QGIS model.On the QEP I understand the timing issue you raised and appreciate you flagging it. I'll draft the QEP during the community bonding period and submit it for community review before coding begins, so it doesn't block the proposal submission if that is fine?<br>I also went through the Qt JSON documentation you linked. The implementation plan is built entirely around Qt's built-in JSON classes QJsonDocument, QJsonObject, QJsonArray, and QJsonValue no third-party libraries needed.<br></div></blockquote><div><br></div><div>Can you flip that to use the utilities from QgsJsonUtils? Those use the nlohmann library, which is faster then Qt's classes.</div><div><br></div><div>Nyall</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="auto"><div dir="auto"><div class="gmail_quote" dir="auto"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
</blockquote></div></div>
</blockquote></div></div></div>
</div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>