By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,199 Members | 1,721 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,199 IT Pros & Developers. It's quick & easy.

New to JSON

P: n/a
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.

Aug 16 '06 #1
Share this Question
Share on Google+
3 Replies


P: n/a
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:
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.
Aug 16 '06 #2

P: n/a
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.

Aug 16 '06 #3

P: n/a

Tom Cole wrote:
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

Aug 16 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.