black_yurizan
black_yurizan

Reputation: 437

JSON.parse: expected ',' or '}' after property value in object

I keep getting this error message when I load my human.json file via AJAX.

The whole error message reads

JSON.parse: expected ',' or '}' after property value 
in object at line 2 column 22 of the JSON data. 

I looked online for it, and there have been people who had similar error messages, however, they are not calling via AJAX.

In addition to that, they are not nesting arrays within objects within objects. I think that is the reason why I am getting this error message. Are you not allowed to nest that many properties into each other?

Here's my AJAX code:

var request = new XMLHttpRequest();

request.open('GET','human.json');

request.onreadystatechange = function() {
    if (request.readyState == 4 && request.status == 200) {                     
        var obj = JSON.parse(request.responseText);
        console.log(obj);
    }
}

request.send();

and my human.json file:

{
  "sex":{
    "male":{"fname":["Michael", "Tom"]}, 
    "female"
  },
  "age":[16, 80],
  "job":[]
}

Upvotes: 6

Views: 58186

Answers (5)

karthikeyan
karthikeyan

Reputation: 1

JSON file used by you is invalid json. JSON is a collection of name/value pair. Each key in the JSON should contain value. In your case, key "Female" doesn't have any value. Below shown is the valid JSON format.

{
"sex": {
    "male": {
        "fname": ["Michael", "Tom"]
    },
    "female": "XXX"
},
"age": [16, 80],
"job": []

}

Upvotes: 0

slebetman
slebetman

Reputation: 113974

Your JSON file has a syntax error. The following is reformatted to highlight the error:

{
 "sex":{
  "male":{"fname":["Michael","Tom"]},
  "female"        <----------------- SYNTAX ERROR
 },
 "age":[16,80],
 "job":[]
}

In JSON, objects have the syntax:

{"name" : "value"}

The syntax {"foo"} is invalid according to JSON spec. Therefore you need to provide some value for the female attribute:

{
 "sex":{
  "male":{"fname":["Michael","Tom"]},
  "female":{}
 },
 "age":[16,80],
 "job":[]
}

Upvotes: 4

user1783292
user1783292

Reputation: 538

your "female" is error, need a key or value

you can change the json file to

 {
"sex":{"male":{"fname":["Michael","Tom"]} ,"female":null},
 "age":[16,80],
 "job":[]
}

Upvotes: 0

Wes Foster
Wes Foster

Reputation: 8900

Your JSON is indeed invalid.

{
  "sex": {
    "male":{
      "fname": ["Michael","Tom"]
    },
    "female"   ## Here is the problem
  },
  "age": [16,80],
  "job": []
}

Perhaps change that line to:

"female": {}

It all depends on what you're wanting to do

Upvotes: 1

Paul
Paul

Reputation: 141877

Your object isn't valid JSON. Specifically at the part:

,"female"}

A JSON property must have a value. Maybe that should that be:

,"female":{}}

or:

,"female":null}

Upvotes: 8

Related Questions