After a lot of work, we're ready to provide a more sensible data layout for
format=json results (and also format=php). You can enable this in your
requests by adding "&formatversion=2", but do note that the output
formatting isn't entirely stable yet and might change without warning.

Without specifying formatversion=2, things should be backwards-compatible.
But there are some caveats:

   - Modules that were previously outputting raw booleans in JSON may now
   have those properties being output using the standard convention:
   empty-string for true and absent for false. Instances of this should be
   reported in Phabricator <https://phabricator.wikimedia.org/> to be
   fixed, please tag with #MediaWiki-API
   <https://phabricator.wikimedia.org/project/profile/200/> and the tag for
   the relevant extension.
   - format=xml will now reversibly mangle tag and attribute names that are
   not valid XML, instead of just outputting invalid XML.
   - Previously-announced breaking changes to log entry parameter
   formatting, that are not actually part of this general result formatting
   change but were made at about the same time.

With formatversion=2, we can make some useful changes:

   - Return booleans as boolean true instead of empty-string. Where
   appropriate,[1] return boolean false instead of omitting the property.
   - Return empty objects in JSON as {}, rather than [].
   - Have action=query's "pages" be an array, instead of an object with
   page ids as keys that can be difficult to iterate.
   - Provide useful property names instead of '*'.
   - Eliminate useless indirection, e.g. {"text":"..."} instead of
   {"text":{"*":"..."}} and {"key1":"value1","key2":"value2"} instead of
   [{"name":"key1","*":"value1"},{"name":"key2","*":"value2"}].

If you see missed opportunities to make the above changes in existing
formatversion=2 output, or if there are other changes that would make API
output easier to use in JSON, please let me know! Phabricator
<https://phabricator.wikimedia.org/> would be ideal (tag with #MediaWiki-API
<https://phabricator.wikimedia.org/project/profile/200/>, and the
appropriate extension's tag if applicable), or reply on the mediawiki-api
mailing list <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api>.

Thanks.


 [1]: Where the property is usually false, it's sometimes just bloat to
include it.


-- 
Brad Jorsch (Anomie)
Software Engineer
Wikimedia Foundation
_______________________________________________
Mediawiki-api-announce mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce
_______________________________________________
Mediawiki-api mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-api

Reply via email to