Connecting Tech Pros Worldwide Forums | Help | Site Map

New to JSON

Tom Cole
Guest
 
Posts: n/a
#1: Aug 16 '06
I'm new to JSON but see how it can be an improvement over XML for some
things.

I've modified a test servlet to return the following string with a
content type of text/x-json:

{ header: { date: "16 Aug 2006 19:53:03 GMT", headers: [ { name:
"accept", value: "*/*" }, { name: "accept-language", value: "en-us" },
{ name: "referer", value: "http://njep11/Ajax/" }, { name:
"content-type", value: "application/x-www-form-urlencoded" }, { name:
"accept-encoding", value: "gzip, deflate" }, { name: "user-agent",
value: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR
1.0.3705; .NET CLR 1.1.4322)" }, { name: "host", value: "njep11" }, {
name: "content-length", value: "9" }, { name: "connection", value:
"Keep-Alive" }, { name: "cache-control", value: "no-cache" }] } }

On the client side I receive this an create an object via eval:

var object = eval('(' + xmlhttp.respongeText + ')');

If I do an alert(object.toString()) I get [Object object]. So I thought
it was working okay. However if I try to access object.headers[0].name
I get an error stating "headers.0 is null or not an object.

Is my JSON string correct? I'm not sure what role (if any) whitespace
plays in this type. I'm expecting it to create a object of type header
with a variable date and an array of objects that contain name and
value variables.

Thanks in advance.


Tom Cole
Guest
 
Posts: n/a
#2: Aug 16 '06

re: New to JSON


Sorry for the typo, it is responseText. And I've validated that the
text was sent properly as my JSON paste in this post was a cut and
paste of the response.

Thanks.

Tom Cole wrote:
Quote:
I'm new to JSON but see how it can be an improvement over XML for some
things.
>
I've modified a test servlet to return the following string with a
content type of text/x-json:
>
{ header: { date: "16 Aug 2006 19:53:03 GMT", headers: [ { name:
"accept", value: "*/*" }, { name: "accept-language", value: "en-us" },
{ name: "referer", value: "http://njep11/Ajax/" }, { name:
"content-type", value: "application/x-www-form-urlencoded" }, { name:
"accept-encoding", value: "gzip, deflate" }, { name: "user-agent",
value: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR
1.0.3705; .NET CLR 1.1.4322)" }, { name: "host", value: "njep11" }, {
name: "content-length", value: "9" }, { name: "connection", value:
"Keep-Alive" }, { name: "cache-control", value: "no-cache" }] } }
>
On the client side I receive this an create an object via eval:
>
var object = eval('(' + xmlhttp.respongeText + ')');
>
If I do an alert(object.toString()) I get [Object object]. So I thought
it was working okay. However if I try to access object.headers[0].name
I get an error stating "headers.0 is null or not an object.
>
Is my JSON string correct? I'm not sure what role (if any) whitespace
plays in this type. I'm expecting it to create a object of type header
with a variable date and an array of objects that contain name and
value variables.
>
Thanks in advance.
Tom Cole
Guest
 
Posts: n/a
#3: Aug 16 '06

re: New to JSON


Got it:

object.header.headers[0].name worked. I was assuming that the object
created was a header, not that it contained a header.

Thanks.

gregory.murray@sun.com
Guest
 
Posts: n/a
#4: Aug 16 '06

re: New to JSON



Tom Cole wrote:
Quote:
I'm new to JSON but see how it can be an improvement over XML for some
things.
>
I've modified a test servlet to return the following string with a
content type of text/x-json:
>
{ header: { date: "16 Aug 2006 19:53:03 GMT", headers: [ { name:
"accept", value: "*/*" }, { name: "accept-language", value: "en-us" },
{ name: "referer", value: "http://njep11/Ajax/" }, { name:
"content-type", value: "application/x-www-form-urlencoded" }, { name:
"accept-encoding", value: "gzip, deflate" }, { name: "user-agent",
value: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR
1.0.3705; .NET CLR 1.1.4322)" }, { name: "host", value: "njep11" }, {
name: "content-length", value: "9" }, { name: "connection", value:
"Keep-Alive" }, { name: "cache-control", value: "no-cache" }] } }
>
On the client side I receive this an create an object via eval:
>
var object = eval('(' + xmlhttp.respongeText + ')');
>
If I do an alert(object.toString()) I get [Object object]. So I thought
it was working okay. However if I try to access object.headers[0].name
I get an error stating "headers.0 is null or not an object.
>
Is my JSON string correct? I'm not sure what role (if any) whitespace
plays in this type. I'm expecting it to create a object of type header
with a variable date and an array of objects that contain name and
value variables.
>
Thanks in advance.
Hi Tom,

With JSON the keys in the key value pairs also need to be in quotes.
Also you need to access the object from header. Below is a working
example of your code:

<script type="text/javascript">

var text = "{ 'header': { 'date': '16 Aug 2006 19:53:03 GMT',
'headers': [ { 'name': 'accept', 'value': '*/*' }, { 'name':
'accept-language', 'value': 'en-us' }, { 'name': 'referer', 'value':
'http://njep11/Ajax/' }, { 'name':'content-type', 'value':
'application/x-www-form-urlencoded' }, { 'name':'accept-encoding',
'value': 'gzip, deflate' }, { 'name': 'user-agent', 'value':
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705;
..NET CLR 1.1.4322)' }, { 'name': 'host', 'value': 'njep11' }, { 'name':
'content-length', 'value': '9' }, { 'name': 'connection', 'value':
'Keep-Alive' }, { 'name': 'cache-control', 'value': 'no-cache' }] } }";

//On the client side I receive this an create an object via eval:

var object = eval('(' + text + ')');

alert("object=" + object.header.headers[0].name);
</script>

Paste this into any page to test.

-Greg

Closed Thread


Similar JavaScript / Ajax / DHTML bytes