Utilities handling I/O of MaterialX in JSON format
Project description
MaterialX JSON I/O
Contents
Introduction
This is a Python package for supporting interoperability of MaterialX documents by adding support conversion to / from a JSON
representation.
The JSON
representation is lossless and is targeted at integrations which prefer to use JSON
as a data exchange format instead of XML
.
Documentation
Visit the home page for For further information about this package, including links to API documentation and a Jupyter notebook with sample code that expands on the basic Usage example.
Installation
The Python package is losted on PyPi and can be installed using `pip``:
pip install materialxjson
or the source repository can be cloned and the package built from the command line:
python -m build
This will build a distribution folder called dist
which contains a zip file which can be installed using:
pip --install <name of zip>
Usage
The following example shows bidirectional conversion:
- A MaterialX file in
XML
format is read in and written to a string inJSON
format. - A MaterialX file in
JSON
format is read in and written to a string inXML
format.
Note that any JSON
package can be used to perform JSON
I/O. The json
package is used by the utilities provided in this package.
Package Setup
The materialjson
package can be loaded as follows, along with MaterialX and json packages:
import json
import MaterialX as mx
from materialxjson import core
XML to JSON Format Conversion
A MaterialX document can be read in from an XML file as follows:
import pkg_resources
# Read in MaterialX file
mtlxFileName = pkg_resources.resource_filename('materialxjson', 'data/standard_surface_default.mtlx')
doc = mx.createDocument()
mx.readFromXmlFile(doc, mtlxFileName)
and then converted to JSON format as follows by creating a MaterialXJson
object and calling the documentToJSON
method:
# Create I/O handler
mtlxjson = core.MaterialXJson()
# Write to JSON format
jsonObject = mtlxjson.documentToJSON(doc)
The contents of the JSON object can be extracted out using the json
package as follows. (An indentation level of 2
is
used to make the output more readable.)
# Convert JSON object to JSON string
jsonString = core.Util.jsonToJSONString(jsonObject)
JSON to XML Format Conversion
A JSON file can be read in as follows. In this case we load the sample file included with the package:
# Get file to load
jsonFileName = pkg_resources.resource_filename('materialxjson', 'data/standard_surface_default_mtlx.json')
# Load JSON file
jsonObject = core.Util.readJson(jsonFileName)
The JSON object is then converted to a MaterialX document and written out to an XML string as follows:
# Create I/O handler
mtlxjson = core.MaterialXJson()
# Read JSON object into document
doc = mx.createDocument()
mtlxjson.documentFromJSON(jsonObject, doc)
# Write to XML String
docstring = core.Util.documentToXMLString(doc)
Caveats
The following are some caveats to be aware of when using this package:
- There is no equivalent support for "include files" for JSON conversion. The JSON representation is intended to be a single file representation.
- XML comments are not preserved in the JSON representation.
Author
- LinkedIn: Bernard Kwok
- GitHub: kwokcb
- Email: kwokcb@gmail.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file materialxjson-1.39.tar.gz
.
File metadata
- Download URL: materialxjson-1.39.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8909938f62b227d12f1d9c5551ef042a0665a402d145970d62f632f0194739f9 |
|
MD5 | e066f44ee3d9061e26f74984c7902f42 |
|
BLAKE2b-256 | 90c11fe7e43db3a3910f21ff5c6b028d544d6201898d036bd574fce293e876dc |
File details
Details for the file materialxjson-1.39-py3-none-any.whl
.
File metadata
- Download URL: materialxjson-1.39-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d64dcfcd8a476811b75e08afb85d55f99e7a44407bf2c68a28242c58ca7bb45b |
|
MD5 | 613b187ca73cc0e30a1bc6554cd6c0bb |
|
BLAKE2b-256 | 050a778bd9c57799fbee5b09409107f6f1b170b941a235bfa13750b837c7f48a |