Question

I want to feed a dijit.form.Select (Dojo Select-Box) with a Data-Store (JsonRest). The Problem is, that the JSON-Parser only accepts JSON in this format:

[
  {id:"1", name:"One1"},
  {id:"2", name:"Two1"}
];

The REST-API of the webapplication we want to call delivers the following JSON:

{
  "data": [
      {id:"1", name:"One1"},
      {id:"2", name:"Two1"}
],
    "total": 2,
    "start": 0,
    "sort": "name",
    "order": "asc",
     "size": 2
};

That is why the Select Box does not show any data. Therefore, we need to remove the {"data": part and the last part of the JSON message bevore passing it to the Dojo Select Box.

The Data is stored in a JsonRest Object. So the question is how we can remove the first and the last part of the JSON in a way that simply this here is given to the Select-Box:

[
  {id:"1", name:"One1"},
  {id:"2", name:"Two1"}
];

Thank you for your answers and best regards Ben

Was it helpful?

Solution

Create a new Array variable from the data for the dojo select seems simplest ...

var restapidataObj = {
  "data": [
      {id:"1", name:"One1"},
      {id:"2", name:"Two1"}
    ],
    "total": 2,
    "start": 0,
    "sort": "name",
    "order": "asc",
     "size": 2
};

var dojoSelectArray = restapidataObj.data;

Now pass dojoSelectArray to dojo

OTHER TIPS

Store the result in a object and access the data property of that object.

var result = {
  "data": [
  {id:"1", name:"One1"},
  {id:"2", name:"Two1"}
],
   "total": 2,
   "start": 0,
   "sort": "name",
   "order": "asc",
   "size": 2
};

result.data would give you the data array.

Check the javascript object documentation at MDN

resultFromServer =

     {
       "data": [
           {id:"1", name:"One1"},
           {id:"2", name:"Two1"}
     ],
         "total": 2,
         "start": 0,
         "sort": "name",
         "order": "asc",
          "size": 2
     };

this convert to object (Use this incase resultFromServer is a string)

    var Output = eval('('+ resultFromServer+')')

this gives your output

    JSON.stringify(Output.data)

gives the string

    "[{"id":"1","name":"One1"},{"id":"2","name":"Two1"}]"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top