Skip to content

JKI JSON does not deserialize objects with properties set to empty objects #32

@TAGC

Description

@TAGC

This library is not able to deserialize JSON containing objects in which:

  • one property is set to an empty object
  • at least one other property exists, set to something like a number or a string

Given this JSON (call it "JSON A"):

{
  "foo": {
    "propA": {
      "nestedA": 1
    },
    "propB": 1
  }
}

And this JSON (call it "JSON B"):

{
  "foo": {
    "propA": {},
    "propB": 1
  }
}

Expected results

Both JSON A and B are valid, and JKI JSON should deserialize both without issue using Unflatten From JSON String.vi.

Actual results

Unflatten From JSON String.vi can deserialize JSON A without issue, but returns an error trying to deserialize JSON B:

Error 1527 occurred at Flattened String To Variant in Set Data Name__ogtk.vi->JKI JSON Serialization.lvlib:JSON Deserializer.lvclass:Adapt To Type.vi:3110001->JKI JSON Serialization.lvlib:JSON Deserializer.lvclass:Adapt To Type.vi:3110002->JKI JSON Serialization.lvlib:JSON Deserializer.lvclass:Unflatten From String.vi:2180001->JKI JSON Serialization.lvlib:Unflatten From JSON String.vi:4940001->Run.vi

Possible reason(s):

LabVIEW:  Attempted to read flattened data of a LabVIEW class that is not currently loaded into LabVIEW.

Steps to reproduce

  1. Save this LabVIEW as a VI in some directory (call it Run.vi):

    snippet

  2. Create a file example.json in the same directory.

  3. Copy JSON A into example.json and save.

  4. Execute Run.vi. There should be no error.

  5. Replace the contents of example.json with JSON B and save.

  6. Execute Run.vi. You should see Error Out display error 1527.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions