<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>