Jest to kod, który można utworzyć JSON, którego oczekuje serwera. Ale są jednak pewne problemy

<!DOCTYPE html>
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
//var acc = {};
var x = 10;
var y = 20;
var z = 30;



var output = [];
output[0] = {
    name: "Accelerometer_X",
    value: JSON.parse(x), // retrieve x
};
output[1] = {
    name: "Accelerometer_Y",
    value: JSON.parse(y), // retrieve y
};
output[2] = {
    name: "Accelerometer_Z",
    value: JSON.parse(z) // retrieve z
};

var record = [];
record[0] = {
    starttime: new Date(),
    output: output,
};

var observations = [];
observations[0] = {
    sensor: "",
    record: record,
};

var fromData = {};
fromData.version = "1.0.1";
fromData.observations = observations;
alert(JSON.stringify(fromData));
console.log(JSON.stringify(fromData));
//-->
</script>
</body>
</html>

Wyjście JSON jest:

{
    "version": "1.0.1",
    "observations": [
        {
            "sensor": "",
            "record": [
                {
                    "starttime": "2014-08-15T16:01:34.711Z",
                    "output": [
                        {
                            "name": "Accelerometer_X",
                            "value": 10
                        },
                        {
                            "name": "Accelerometer_Y",
                            "value": 20
                        },
                        {
                            "name": "Accelerometer_Z",
                            "value": 30
                        }
                    ]
                }
            ]
        }
    ]
}

Ale oczekiwany JSON jest:

{
    "version": "1.0.1",
    "observations": [
        {
            "sensor": "",
            "record": [
                {
                    "starttime": "1-JAN-2014 15:30:00 IST",
                    "output": [
                        {
                            "name": "Accelerometer_X",
                            "value": "10"
                        },
                        {
                            "name": "Accelerometer_Y",
                            "value": "20"
                        },
                        {
                            "name": "Accelerometer_Z",
                            "value": "30"
                        }
                    ]
                }
            ]
        }
    ]
}

Wartości w oczekiwanym JSON są w obrębie "" IE.

                    {
                        "name": "Accelerometer_Z",
                        "value": "30"
                    }

Ale wyprodukowany JSON jest:

                    {
                        "name": "Accelerometer_Z",
                        "value": 30
                    }

I jest inny problem, który jest startem. Oczekiwany format startime jest

1-JAN-2014 15:30:00 IST

Wyprodukowany startime to:

2014-08-15T16:01:34.711Z

Nie wiem, jak to zmienić. Proszę pomóż mi.

-3
ninja.stop 15 sierpień 2014, 20:45

2 odpowiedzi

Najlepsza odpowiedź

Nie powinieneś używać JSON.parse na wartościach, które chcesz umieścić w obiekcie. Metoda JSON.parse służy do analizowania łańcucha JSON do obiektu, ale wartości nie są strunami JSON.

Wyjmij JSON.parse wywołanie (ponieważ nie zmienia wartości) i użyj metody toString, aby włączyć wartości do ciągów:

output[0] = {
    name: "Accelerometer_X",
    value: x.toString(),
};
output[1] = {
    name: "Accelerometer_Y",
    value: y.toString(),
};
output[2] = {
    name: "Accelerometer_Z",
    value: z.toString()
};

Nie ma budynku w funkcji, która formatuje w ten sposób datę, musisz samodzielnie zrobić. Coś jak:

function formatDate(d) {
  return d.getDate() + '-' + (d.getMonth() + 1) + "-" + d.getFullYear() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds() + " IST";
}

Stosowanie:

record[0] = {
    starttime: formatDate(new Date()),
    output: output,
};
0
Guffa 15 sierpień 2014, 18:47

To jest kod, który do tej pory działa:

<!DOCTYPE html>
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
//var acc = {};
var x = 10;
var y = 20;
var z = 30;

//var accString = JSON.stringify(acc); // that's what you have

var output = [];
output[0] = {
    name: "Accelerometer_X",
    value: x.toString(), // retrieve x
};
output[1] = {
    name: "Accelerometer_Y",
    value: y.toString(), // retrieve y
};
output[2] = {
    name: "Accelerometer_Z",
    value: z.toString() // retrieve z
};

var record = [];
record[0] = {
    starttime: new Date(),
    output: output,
};

var observations = [];
observations[0] = {
    sensor: "",
    record: record,
};

var fromData = {};
fromData.version = "1.0.1";
fromData.observations = observations;
alert(JSON.stringify(fromData));
console.log(JSON.stringify(fromData));
//-->
</script>
</body>
</html>

Ale czas ma teraz problem. Każdy, kto rozwiązuje ten problem?

0
ninja.stop 15 sierpień 2014, 18:17