From: "Jon Paal [MSMD]" Jon nospam Paal on
using json like

( {"Records": [ {"firstname":"Nancy","lastname":"Davolio"} ], "RecordCount":"1" } )

and jquery like:

$.ajax({
....

success: function(json, status) {
if(json.Records){alert("firstname= "+json.Records.firstname );}
....

I can retrieve values for firstname if I use the reference spelled out

is there a way to get it by numerical position, something like:

if(json.Records){alert("firstname= "+json.Records.0 );}

except it would work .. :)

thanks in advance


From: Jorge on
On May 4, 8:50 pm, "Jon Paal [MSMD]" <Jon nospam Paal @ everywhere dot
com> wrote:
> using json like
>
> ( {"Records": [ {"firstname":"Nancy","lastname":"Davolio"} ], "RecordCount":"1" } )
>
> and jquery like:
>
>  $.ajax({
> ...
>
>     success: function(json, status) {
>      if(json.Records){alert("firstname= "+json.Records.firstname );}
> ...
>
> I can retrieve values for firstname if I use the reference spelled out
>
> is there a way to get it by numerical position, something like:
>
>   if(json.Records){alert("firstname= "+json.Records.0 );}
>
> except it would work .. :)
>
> thanks in advance

<html>
<head></head>
<body>
<script>
var jsonText, records, recordCount, i, a, b;

/*
If the data was serialized this way :
*/

jsonText='[["Nancy","Davolio"],["Jon","Paal"]]';

records = eval(jsonText);

/*
Then you could do :
*/
recordCount = records.length;
for (i=0; i<recordCount; i++) {
a = records[i][0];
b = records[i][1]
alert( b+", "+a);
}

/*
HTH,
--Jorge.
*/
</script>
</body>
</html>
From: "Jon Paal [MSMD]" Jon nospam Paal on
thanks,

this will work, and if I still need formal json I'll go back to hard coding names....




From: Lasse Reichstein Nielsen on
"Jon Paal [MSMD]" <Jon nospam Paal @ everywhere dot com> writes:

> using json like
>
> ( {"Records": [ {"firstname":"Nancy","lastname":"Davolio"} ], "RecordCount":"1" } )
>
> and jquery like:
>
> $.ajax({
> ...
>
> success: function(json, status) {
> if(json.Records){alert("firstname= "+json.Records.firstname );}
> ...

I hope it's "json.Records[0].firstname", since Records is an array.

> I can retrieve values for firstname if I use the reference spelled out
>
> is there a way to get it by numerical position, something like:
>
> if(json.Records){alert("firstname= "+json.Records.0 );}

json.Records[0] gives the first record.
To retrieve the "firstname" property, you need to use the "firstname"
property name. There is no ordering of named properties, so they don't
have a numerical index at all.

/L
--
Lasse Reichstein Nielsen - lrn(a)hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
From: Jorge on
On May 5, 5:57 am, "Jon Paal [MSMD]" <Jon nospam Paal @ everywhere dot
com> wrote:
> thanks,
>
> this will work, and if I still need formal json I'll go back to hard coding names....

Cool.

It's not stated clearly enough at json.org :
http://tools.ietf.org/html/rfc4627 : line 75 :
"A JSON text is a serialized object *** or array. ***"

But what parses as valid json ?


<html>
<head>
<style>
bad {
color: red;
}
blue {
color: blue;
}
</style>
<script src="http://www.JSON.org/json2.js">
/*
Please do NOT link to json.org,
use your own copy instead.
*/
</script>

</head>
<body>
<!--567890123456789012345678901234567890123456789012345678901234567890
-->
<script>
(function () {
var testIt = function (p) {
var i, name = prefix = msg = "";
var datesAsObjects = function (key, value) {
/*
see the reviver function in the source code :
json.org/json2.js line ~104..
this is an example function that intercepts Date(mm/dd/yyyy)
and turns it into a date object instead of a string.
It's NOT part of the json standard, it's just a quick
example of a reviver function. (and it has a bug).
*/
var d;
if (typeof value === 'string' &&
value.slice(0, 5) === 'Date(' &&
value.slice(-1) === ')') {
d = new Date(value.slice(5, -1));
if (d) {
return d;
}
}
return value;
}
try {
data = JSON.parse(p, datesAsObjects);
/*
See the source : json.org/json2.js
*/
if (typeof data === 'object') {
if (data.constructor === Array) {
msg = "an object : Array : ";
for (i=0;i<data.length;i++) {
msg += prefix+"e["+i+"]: "+typeof data[i]+" = "+data[i];
prefix = ", ";
}
} else if (data.constructor === Object) {
msg = "an object : Object : ";
for (name in data) {
if (data.hasOwnProperty(name)) {
msg += prefix+name+": "+typeof data[name]+" = "+data[name];
}
}
} else {
msg="an object whose constructor is : "+data.constructor;
}
} else {
msg = "a " + typeof data + ": " + data;
}
document.write("The string "+p+" was parsed as");
document.write(" VALID json.\nIt produced " + msg + "<br>");
} catch (e) {
document.write("<bad>The string "+p+" is NOT");
document.write(" valid json.</bad><br>");
}
};

/*
In theory, just arrays and objects,
in practice :
let's see what's what (valid json?) :
*/

testIt('01/15/2008'); testIt('[01/15/2008]');
testIt('15/01/2008'); testIt('[15/01/2008]');
testIt('"01/15/2008"'); testIt('["01/15/2008"]');
testIt('"15/01/2008"'); testIt('["15/01/2008"]');
testIt('Date(15/01/2008)'); testIt('[Date(15/01/2008)]');
testIt('Date(01/15/2008)'); testIt('[Date(01/15/2008)]');
/*
the next one gives the date wrong.
*/
document.write("<blue>");
testIt('"Date(15/01/2008)"'); testIt('["Date(15/01/2008)"]');
document.write("</blue>");
testIt('"Date(01/15/2008)"'); testIt('["Date(01/15/2008)"]');
testIt('true'); testIt('[true]');
testIt('True'); testIt('[True]');
testIt('false'); testIt('[false]');
testIt('False'); testIt('[False]');
testIt('null'); testIt('[null]');
testIt('Null'); testIt('[Null]');
testIt('"true"'); testIt('["true"]');
testIt('"True"'); testIt('["True"]');
testIt('"false"'); testIt('["false"]');
testIt('"False"'); testIt('["False"]');
testIt('"null"'); testIt('["null"]');
testIt('"Null"'); testIt('["Null"]');
testIt('Hi there !'); testIt('[Hi there !]');
testIt('"Hi there !"'); testIt('["Hi there !"]');
testIt('99'); testIt('[99]');
testIt('99.98'); testIt('[99.98]');
testIt('9.98e-16'); testIt('[9.98e-16]');
testIt('"99"'); testIt('["99"]');
testIt('"99.98"'); testIt('["99.98"]');
testIt('"9.98e-16"'); testIt('["9.98e-16"]');
testIt('[["Nancy","Davolio"],["Jon","Paal"]]');
/*
the next one gives an invalid date.
*/
document.write("<blue>");
testIt('["Date(01/15/2008)","Date()","Date","99",99]');
document.write("</blue>");
testIt('{"aProperty":99}');
testIt('"function(){alert(window.location.href)}"');
testIt('function(){alert(window.location.href)}');
testIt('"window.aGlobalVar=99"'); testIt('window.aGlobalVar=99');

/*
HTH
--Jorge.
*/
})();
</script>
</body>
</html>