This works fine for me, ez pz
>>> from llama_index.schema import TextNode
>>> nodes = [TextNode(text="test1"), TextNode(text="test2")]
>>> import json
>>> nodes_str = [x.dict() for x in nodes]
>>> data = json.dumps(nodes_str)
>>> data
'[{"id_": "d44c4b9c-5803-4d32-95a7-414b5a520138", "embedding": null, "metadata": {}, "excluded_embed_metadata_keys": [], "excluded_llm_metadata_keys": [], "relationships": {}, "text": "test1", "start_char_idx": null, "end_char_idx": null, "text_template": "{metadata_str}\\n\\n{content}", "metadata_template": "{key}: {value}", "metadata_seperator": "\\n", "class_name": "TextNode"}, {"id_": "001fea50-26cf-4a13-9648-b56a206d9a99", "embedding": null, "metadata": {}, "excluded_embed_metadata_keys": [], "excluded_llm_metadata_keys": [], "relationships": {}, "text": "test2", "start_char_idx": null, "end_char_idx": null, "text_template": "{metadata_str}\\n\\n{content}", "metadata_template": "{key}: {value}", "metadata_seperator": "\\n", "class_name": "TextNode"}]'
>>> nodes_str = json.loads(data)
>>> nodes = [TextNode.parse_obj(x) for x in nodes_str]
>>> nodes[0].text
'test1'
>>>