Easier design with non-tabloid JSON data (fields vs. variables)

We're using L&L 21 with JSON data. like in the form below.

When our form designers try to build nice forms they get all items as (tabular)-values even though absolutely most of the data is just single variables without the need for data-tables.

That's quite annoying, because then our designers have to remove all that unnecessary table-clutter (header, footer etc.) for each element.

It would be great, if it would be easier to add those attributes for instance just as simple texts.

{
  "checklistId": "5b1675551de3681024d9f492",
  "completed": true,
  "context": "WORKORDER",
  "contextId": "110003",
  "print": false,
  "content": {
    "contextdata": {
      "lineitem": [{
          "type": "T",
          "title": "Reifen wuchten und wechseln",
          "sortIndex": 10,
          "lineItemId": 3267
        },
        {
          "type": "L",
          "title": "Räder wechseln",
          "quantity": 0.25,
          "sortIndex": 20,
          "grossPrice": 19.34,
          "quantityUnit": "aw",
          "number": "rw-4",
          "lineItemId": 3268
        }
      ],
      "basketlineitem": [{
          "type": "E",
          "title": "Hauptbremszylinder",
          "quantity": 2,
          "quantityUnit": "St",
          "number": "03492361",
          "lineItemId": 80
        } {
          "group": "WASSERPUMPE ERNEUERN -",
          "type": "G",
          "title": "WASSERPUMPE ERNEUERN -",
          "quantity": 1,
          "sortIndex": 3,
          "number": "J301A103",
          "lineItemId": 96
        },
        {
          "group": "WASSERPUMPE ERNEUERN -",
          "type": "L",
          "title": "Kühlmittelpumpe aus- und einbauen",
          "quantity": 40,
          "sortIndex": 4,
          "number": "J609100",
          "lineItemId": 97
        }
      ],
      "summary": {
        "bringindatetime": "2018-05-31T06:00:00.000Z",
        "externalReference": "",
        "customerId": 29,
        "readablebringindatetime": "Donnerstag, 31. Mai 2018 08:00",
        "readablepickUpDateTime": "Freitag, 8. Juni 2018 22:50",
        "remark": "Schöne Auftragsinfo.😀 Die gefällt einem heute noc",
        "systemId": 1,
        "type": "Sk Normal Inland",
        "workorderId": 110003,
...
From this example json we would just need two tables:
content.contextdata.lineitem

and

content.contextdata.basketlineitem

and keep the rest (no arrays) as variables.
This would reduce the design-time a lot.




For us it would be enough, if we could move branches within the "variable/fields" sidebar between the two root items 'variables' and 'fields'.

If some array element (field) is moved to variable branch it would be ok, to add per default always the first item. E. g.:

qrlink.link[0]

and require a manual change within the text editor.

Thanks in advance,

           Joe

You could go ahead and use the AutoDefineField event to just call LL.Variables.Add(…) and thus move or mirror the field to the variables yourself. This should work just fine.

Hello,
I am using L&L 25, with JSON data, and have the same Joe’s issue.
I could use Jochen’s suggestion, I mean LL.Variables.Add(...), but I would like to know if, meanwhile, some other solution has been added.
I would like to ask if JsonDataProviderOptions can help and, even if not, if you could explain to me what they are used to.

Thank you in advance.
Kind regards.
Nicola

Hi Nicola,

We haven’t applied any changes to the JSON parsing since then. As an array might at any time contain more than just one entry, we need to translate this as a table. Thus, the workaround is still state-of-the-art.

Regarding the JsonDataProviderOptions - these allow you to pass a custom class derived from NetworkFileProvider if you require. This is useful for quite special scenarios where you need a custom authentication method in order to be able to retrieve files from the network.

Thanks for your reply.
I guess I will use LL.Variable.Add then, or pre-parse JSON file maybe.

Regards

A post was split to a new topic: Questions on JsonDataProvider