Python Driver's _nodeToJson() returns invalid JSON
Describe the bug
I am trying some cypher queries using the python driver.
When iterating the results of a query, The function .toJson() returns a JSON string containing a trailing comma in the "properties" field.
As a result, the JSON is invalid and it is not possible to convert it into a dict using json.loads() for example.
How are you accessing AGE (Command line, driver, etc.)?
- Python Driver
What data setup do we need to do?
def testJson(self):
print("\n------------------------------")
print("Test 6: Testing JSON output.....")
print("--------------------------------\n")
ag = self.ag
with ag.connection.cursor() as cursor:
try:
ag.cypher(cursor, "CREATE (n:Person {name: %s}) ", params=('Joe',))
ag.cypher(cursor, "CREATE (n:Person {name: %s}) ", params=('Jack',))
ag.cypher(cursor, "CREATE (n:Person {name: %s}) ", params=('Andy',))
ag.cypher(cursor, "CREATE (n:Person {name: %s}) ", params=('Smith',))
ag.cypher(cursor, "CREATE (n:Person {name: %s}) ", params=('Tom',))
# You must commit explicitly
ag.commit()
except Exception as ex:
print(ex)
ag.rollback()
print(" -------- TESTING JSON #1 --------")
cursor = ag.execCypher("MATCH (n) RETURN n")
for row in cursor:
# json.loads will fail if the json str is not properly formatted
as_dict = json.loads(row[0].toJson())
print("Vertex.toJson() returns a correct json string.")
What is the command that caused the error?
for row in cursor:
as_dict = json.loads(row[0].toJson())
Expected behavior The correct behavior would return valid JSON when calling .toJson().
Additional context The problem originates in _nodeToJson(). The way the buffer writing iteration is done in the properties field will always add a trailing comma.
I tested this myself and I can confirm the vertexes created are looking like this:
{label:Person, id:844424930131969, properties:{name: Joe, }}::VERTEX
Which is not a correct JSON string.
Also, I confirm that the PR #1228 fixes the issue.
Hi @omaurel-socha! Thank you very much for bringing up this issue. And thank you @markgomer for confirming it. Our team is now going through the PR to get it merged. @dehowef
This issue is stale because it has been open 60 days with no activity. Remove "Abondoned" label or comment or this will be closed in 14 days.
@rafsun42 Could you look into this?
@jrgemignani It seems the issue was resolved by PR #1228.