Mansa
Mansa

Reputation: 2325

Getting json right in javascript

I am trying to setup an analytics script in which I use json like this:

var visitors = [
    { date: "2014-01-11", value: 7 },
    { date: "2014-01-12", value: 2 },
    { date: "2014-01-13", value: 5 },
];

Now, I am getting my json through ajax from an php page like this:

jQuery.getJSON( "assets/ajax/flurry.php", { method: "ActiveUsers" } )
  .done(function( json ){

    var visitors = json; 
    console.log( "JSON Data: " + json );

});

This produces this:

JSON Data: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

My output from the php page look like this:

[{"@date":"2015-01-14","@value":"948"},{"@date":"2015-01-15","@value":"4720"},{"@date":"2015-01-16","@value":"4989"},{"@date":"2015-01-17","@value":"5221"},{"@date":"2015-01-18","@value":"5658"},{"@date":"2015-01-19","@value":"5484"},{"@date":"2015-01-20","@value":"5508"},{"@date":"2015-01-21","@value":"5560"},{"@date":"2015-01-22","@value":"5576"},{"@date":"2015-01-23","@value":"5452"},{"@date":"2015-01-24","@value":"5524"},{"@date":"2015-01-25","@value":"5804"},{"@date":"2015-01-26","@value":"5714"},{"@date":"2015-01-27","@value":"5478"},{"@date":"2015-01-28","@value":"0"}]

How do I get it to produce an javascript json like the first one?

Any help is appreciated :-)

Upvotes: 0

Views: 110

Answers (4)

luin
luin

Reputation: 1995

When you do "JSON Data: " + json, you are actually converting the json object to a string.

You can use "JSON Data: " + JSON.stringify(json) instead.

Upvotes: 0

user3310334
user3310334

Reputation:

"JSON Data: " + json

Will convert the json object into a string which looks like [object Object].

You can just do:

console.log( "JSON Data: ", json );

to write the object to the console instead of its string representation.

Upvotes: 0

benrict
benrict

Reputation: 369

When you use the following line:

console.log( "JSON Data: " + json );

The code casts the entire object as a string, which is usually not a very useful things as it replaces anything that is an object with this nice [object Object] you're getting.

You could either log the object itself in a separate parameter:

console.log( "JSON Data: ", json );

Or dump the JSON representation of the object:

console.log( "JSON Data: ", JSON.stringify(json));

But you'll probably see that your json variable is already what you expected.

Upvotes: 4

Sadikhasan
Sadikhasan

Reputation: 18600

You need to use JSON.stringify() function

console.log( "JSON Data: " + JSON.stringify(json) );

Upvotes: 1

Related Questions