<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p><span style="font-family:monospace"><span
style="color:#000000;background-color:#ffffff;"># Here's a
starting point for creating JSON input to x3d.py.
Essentially, one would create a parseJSON method to the
classes in x3d.py. Input into the parseJSON methods is a
piece of a dict that contains JSON-like data (with leading @,
#, - in property values)<br>
</span></span></p>
<p><span style="font-family:monospace"><span
style="color:#000000;background-color:#ffffff;"># feedback
welcome, I know this doesn't work yet. Not quite sure what to
fix yet.<br>
</span></span></p>
<p><span style="font-family:monospace"><span
style="color:#000000;background-color:#ffffff;"><span
style="font-family:monospace"><span
style="color:#000000;background-color:#ffffff;">import
json
</span><br>
from x3d import *
<br>
<br>
class JSON_X3D(X3D):
<br>
def parseJSON(self, data):
<br>
self.version = data["@version"]
<br>
self.profile = data["@profile"]
<br>
self.head = JSON_head()
<br>
self.head.parseJSON(data["head"])
<br>
self.Scene = JSON_Scene()
<br>
self.Scene.parseJSON(data["Scene"])
<br>
return self
<br>
<br>
class JSON_head(head):
<br>
def parseJSON(self, data):
<br>
self.children = JSON_MFNode()
<br>
self.children.parseJSON(data)
<br>
self.meta = []
<br>
for m in data["meta"]:
<br>
metachild = JSON_meta()
<br>
metachild.parseJSON(m)
<br>
self.meta.append(metachild)
<br>
return self
<br>
<br>
class JSON_Scene(Scene):
<br>
def parseJSON(self, data):
<br>
self.children = JSON_MFNode()
<br>
self.children.parseJSON(data)
<br>
return self
<br>
<br>
class JSON_meta(meta):
<br>
def parseJSON(self, data):
<br>
self.name = data["@name"]
<br>
self.content = data["@content"]
<br>
return self
<br>
<br>
class JSON_SFNode(SFNode):
<br>
def parseJSON(self, data):
<br>
return self
<br>
<br>
class JSON_MFNode(MFNode):
<br>
def parseJSON(self, data):
<br>
self.children = []
<br>
for c in data["-children"]:
<br>
sfnode = JSON_SFNode()
<br>
sfnode.parseJSON(c)
<br>
self.children.append(sfnode)
<br>
return self
<br>
<br>
with open('HelloWorld.json', encoding="utf-8") as json_file:
<br>
data = json.load(json_file)
<br>
print(data)
<br>
newscene = JSON_X3D()
<br>
scene = newscene.parseJSON(data["X3D"])
<br>
print(scene.XML())<br>
</span></span></span></p>
</body>
</html>