Search code examples
phpc++jsonjson-deserialization

malformed JSON string needs correction for PHP


I made a c++ program with combinations of cout for getting an output as a JSON string so that I can decode it in PHP using the json_decode function. I generated the string with my own logic. I believe that there is a problem in output string but I am unable to find it even after spending hours.

The var_dump(json_decode($string, TRUE)); gives out

NULL

json_last_error_msg(); gives

quoted object property name expected

json_last_error(); gives

4

The original string I'm trying to decode using json_decode($string, TRUE) in PHP5, Platform: Ubuntu x64 14.04 LTS (apache2, php5, php5-json) installed

{"initUserGrid" :{    { 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 } ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }},"initBotGrid" :{    { 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }},"moves" : {   "user" : {7 , 6} , "bot"  : {0 , 6} , "user" : {2 , 9} , "bot"  : {1 , 4} , "user" : {8 , 1} , "bot"  : {2 , 4} , "user" : {9 , 9} , "bot"  : {0 , 9} , "user" : {9 , 4} , "bot"  : {3 , 2} , "bot"  : {6 , 6} , "user" : {8 , 8} , "bot"  : {4 , 0} , "bot"  : {4 , 0} , "user" : {6 , 5} , "bot"  : {2 , 7} , "user" : {3 , 3} , "user" : {4 , 4} , "bot"  : {9 , 7} , "user" : {9 , 7} , "bot"  : {1 , 9} , "user" : {8 , 3} , "bot"  : {4 , 3} , "bot"  : {7 , 8} , "user" : {0 , 4} , "bot"  : {2 , 2} , "bot"  : {1 , 8} , "user" : {0 , 1} , "user" : {1 , 7} , "bot"  : {2 , 4} , "user" : {4 , 9} , "bot"  : {4 , 4} , "bot"  : {1 , 7} , "user" : {5 , 8} , "bot"  : {5 , 0} , "user" : {9 , 6} , "bot"  : {9 , 7} , "user" : {0 , 9} , "bot"  : {9 , 4} , "user" : {0 , 9} , "bot"  : {1 , 1} , "bot"  : {1 , 4} , "user" : {5 , 4} , "bot"  : {1 , 1} , "user" : {7 , 8} , "bot"  : {7 , 6} , "user" : {2 , 1} , "user" : {1 , 1} , "user" : {1 , 3} , "bot"  : {5 , 6} , "user" : {2 , 7} , "bot"  : {6 , 4} , "user" : {5 , 3} , "bot"  : {9 , 8} , "user" : {7 , 4} , "bot"  : {5 , 9} , "user" : {4 , 0} , "user" : {5 , 6} , "bot"  : {9 , 1} , "user" : {2 , 8} , "bot"  : {4 , 9} , "user" : {0 , 9} , "bot"  : {3 , 9} , "user" : {2 , 1} , "bot"  : {9 , 4} , "user" : {3 , 8} , "bot"  : {4 , 3} , "user" : {7 , 1} , "bot"  : {9 , 0} , "user" : {6 , 6} , "bot"  : {8 , 8} , "user" : {9 , 4} , "bot"  : {0 , 4} , "user" : {7 , 6} , "bot"  : {6 , 2} , "user" : {1 , 9} , "bot"  : {1 , 1} , "user" : {2 , 3} , "bot"  : {7 , 6} , "user" : {0 , 4} , "bot"  : {4 , 6} , "user" : {0 , 6} , "bot"  : {7 , 1} , "user" : {3 , 9} , "bot"  : {7 , 9} , "user" : {7 , 9} , "bot"  : {3 , 7} , "user" : {1 , 8} , "bot"  : {6 , 6} , "user" : {0 , 1} , "bot"  : {2 , 3} , "user" : {6 , 1} , "bot"  : {4 , 3} , "user" : {9 , 8} , "bot"  : {4 , 1} , "bot"  : {0 , 2} , "user" : {8 , 9} , "bot"  : {0 , 0} , "bot"  : {9 , 7} , "user" : {6 , 3} , "bot"  : {4 , 8} , "user" : {6 , 6} , "bot"  : {4 , 0} , "user" : {6 , 9} , "bot"  : {0 , 3} , "user" : {6 , 6} , "bot"  : {9 , 3} , "user" : {8 , 2} , "bot"  : {2 , 5} , "user" : {7 , 0} , "user" : {2 , 6} , "bot"  : {5 , 7} , "user" : {9 , 2} , "bot"  : {9 , 7} , "user" : {2 , 0} , "user" : {8 , 8} , "bot"  : {4 , 7} , "user" : {7 , 6} , "bot"  : {6 , 0} , "user" : {3 , 5} , "bot"  : {3 , 8} , "user" : {1 , 1} , "bot"  : {5 , 2} , "user" : {9 , 2} , "bot"  : {2 , 7} , "user" : {4 , 6} , "bot"  : {5 , 4} , "user" : {8 , 1} , "bot"  : {9 , 6} , "user" : {6 , 9} , "bot"  : {7 , 3} , "user" : {0 , 7} , "bot"  : {3 , 3} , "bot"  : {4 , 9} , "user" : {6 , 1} , "bot"  : {0 , 9} , "user" : {3 , 9} , "bot"  : {3 , 3} , "user" : {5 , 8} , "bot"  : {6 , 3} , "user" : {1 , 9} , "bot"  : {5 , 0} , "user" : {3 , 9} , "bot"  : {5 , 3} , "user" : {3 , 4} , "bot"  : {8 , 4} , "user" : {3 , 2} , "user" : {6 , 0} , "user" : {0 , 8} , "bot"  : {0 , 2} , "user" : {3 , 8} , "bot"  : {8 , 0} , "user" : {5 , 6} , "bot"  : {5 , 3} , "user" : {8 , 3} , "bot"  : {2 , 1} , "bot"  : {3 , 0} , "bot"  : {1 , 8} , "user" : {1 , 6} , "bot"  : {3 , 6} , "user" : {0 , 6} , "bot"  : {9 , 1} , "user" : {1 , 5} , "bot"  : {4 , 7} , "user" : {9 , 3} , "bot"  : {2 , 4} , "user" : {6 , 2} , "bot"  : {9 , 2} , "user" : {7 , 1} , "bot"  : {4 , 4} , "user" : {7 , 6} , "bot"  : {8 , 9} , "user" : {7 , 0} , "bot"  : {8 , 9} , "user" : {5 , 0} , "user" : {9 , 3} , "bot"  : {4 , 8}},"result" : "bot"}

Indented Version (without removing '\n')

{
"initUserGrid" :
{
    { 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 }
 ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
}

,

"initBotGrid" :
{
    { 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
 ,  { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
}

,

"moves" : {
   "user" : {7 , 6}
 , "bot"  : {0 , 6}
 , "user" : {2 , 9}
 , "bot"  : {1 , 4}
 , "user" : {8 , 1}
 , "bot"  : {2 , 4}
 , "user" : {9 , 9}
 , "bot"  : {0 , 9}
 , "user" : {9 , 4}
 , "bot"  : {3 , 2}
 , "bot"  : {6 , 6}
 , "user" : {8 , 8}
 , "bot"  : {4 , 0}
 , "bot"  : {4 , 0}
 , "user" : {6 , 5}
 , "bot"  : {2 , 7}
 , "user" : {3 , 3}
 , "user" : {4 , 4}
 , "bot"  : {9 , 7}
 , "user" : {9 , 7}
 , "bot"  : {1 , 9}
 , "user" : {8 , 3}
 , "bot"  : {4 , 3}
 , "bot"  : {7 , 8}
 , "user" : {0 , 4}
 , "bot"  : {2 , 2}
 , "bot"  : {1 , 8}
 , "user" : {0 , 1}
 , "user" : {1 , 7}
 , "bot"  : {2 , 4}
 , "user" : {4 , 9}
 , "bot"  : {4 , 4}
 , "bot"  : {1 , 7}
 , "user" : {5 , 8}
 , "bot"  : {5 , 0}
 , "user" : {9 , 6}
 , "bot"  : {9 , 7}
 , "user" : {0 , 9}
 , "bot"  : {9 , 4}
 , "user" : {0 , 9}
 , "bot"  : {1 , 1}
 , "bot"  : {1 , 4}
 , "user" : {5 , 4}
 , "bot"  : {1 , 1}
 , "user" : {7 , 8}
 , "bot"  : {7 , 6}
 , "user" : {2 , 1}
 , "user" : {1 , 1}
 , "user" : {1 , 3}
 , "bot"  : {5 , 6}
 , "user" : {2 , 7}
 , "bot"  : {6 , 4}
 , "user" : {5 , 3}
 , "bot"  : {9 , 8}
 , "user" : {7 , 4}
 , "bot"  : {5 , 9}
 , "user" : {4 , 0}
 , "user" : {5 , 6}
 , "bot"  : {9 , 1}
 , "user" : {2 , 8}
 , "bot"  : {4 , 9}
 , "user" : {0 , 9}
 , "bot"  : {3 , 9}
 , "user" : {2 , 1}
 , "bot"  : {9 , 4}
 , "user" : {3 , 8}
 , "bot"  : {4 , 3}
 , "user" : {7 , 1}
 , "bot"  : {9 , 0}
 , "user" : {6 , 6}
 , "bot"  : {8 , 8}
 , "user" : {9 , 4}
 , "bot"  : {0 , 4}
 , "user" : {7 , 6}
 , "bot"  : {6 , 2}
 , "user" : {1 , 9}
 , "bot"  : {1 , 1}
 , "user" : {2 , 3}
 , "bot"  : {7 , 6}
 , "user" : {0 , 4}
 , "bot"  : {4 , 6}
 , "user" : {0 , 6}
 , "bot"  : {7 , 1}
 , "user" : {3 , 9}
 , "bot"  : {7 , 9}
 , "user" : {7 , 9}
 , "bot"  : {3 , 7}
 , "user" : {1 , 8}
 , "bot"  : {6 , 6}
 , "user" : {0 , 1}
 , "bot"  : {2 , 3}
 , "user" : {6 , 1}
 , "bot"  : {4 , 3}
 , "user" : {9 , 8}
 , "bot"  : {4 , 1}
 , "bot"  : {0 , 2}
 , "user" : {8 , 9}
 , "bot"  : {0 , 0}
 , "bot"  : {9 , 7}
 , "user" : {6 , 3}
 , "bot"  : {4 , 8}
 , "user" : {6 , 6}
 , "bot"  : {4 , 0}
 , "user" : {6 , 9}
 , "bot"  : {0 , 3}
 , "user" : {6 , 6}
 , "bot"  : {9 , 3}
 , "user" : {8 , 2}
 , "bot"  : {2 , 5}
 , "user" : {7 , 0}
 , "user" : {2 , 6}
 , "bot"  : {5 , 7}
 , "user" : {9 , 2}
 , "bot"  : {9 , 7}
 , "user" : {2 , 0}
 , "user" : {8 , 8}
 , "bot"  : {4 , 7}
 , "user" : {7 , 6}
 , "bot"  : {6 , 0}
 , "user" : {3 , 5}
 , "bot"  : {3 , 8}
 , "user" : {1 , 1}
 , "bot"  : {5 , 2}
 , "user" : {9 , 2}
 , "bot"  : {2 , 7}
 , "user" : {4 , 6}
 , "bot"  : {5 , 4}
 , "user" : {8 , 1}
 , "bot"  : {9 , 6}
 , "user" : {6 , 9}
 , "bot"  : {7 , 3}
 , "user" : {0 , 7}
 , "bot"  : {3 , 3}
 , "bot"  : {4 , 9}
 , "user" : {6 , 1}
 , "bot"  : {0 , 9}
 , "user" : {3 , 9}
 , "bot"  : {3 , 3}
 , "user" : {5 , 8}
 , "bot"  : {6 , 3}
 , "user" : {1 , 9}
 , "bot"  : {5 , 0}
 , "user" : {3 , 9}
 , "bot"  : {5 , 3}
 , "user" : {3 , 4}
 , "bot"  : {8 , 4}
 , "user" : {3 , 2}
 , "user" : {6 , 0}
 , "user" : {0 , 8}
 , "bot"  : {0 , 2}
 , "user" : {3 , 8}
 , "bot"  : {8 , 0}
 , "user" : {5 , 6}
 , "bot"  : {5 , 3}
 , "user" : {8 , 3}
 , "bot"  : {2 , 1}
 , "bot"  : {3 , 0}
 , "bot"  : {1 , 8}
 , "user" : {1 , 6}
 , "bot"  : {3 , 6}
 , "user" : {0 , 6}
 , "bot"  : {9 , 1}
 , "user" : {1 , 5}
 , "bot"  : {4 , 7}
 , "user" : {9 , 3}
 , "bot"  : {2 , 4}
 , "user" : {6 , 2}
 , "bot"  : {9 , 2}
 , "user" : {7 , 1}
 , "bot"  : {4 , 4}
 , "user" : {7 , 6}
 , "bot"  : {8 , 9}
 , "user" : {7 , 0}
 , "bot"  : {8 , 9}
 , "user" : {5 , 0}
 , "user" : {9 , 3}
 , "bot"  : {4 , 8}
}
,
"result" : "bot"
}

Solution

  • Your json is invalid as you can easily check on http://jsonlint.com/ for example.

    The first problem you can see on the 4th line of your prettified json:

    {
    "initUserGrid" :
    {
        {
        ^ This is wrong
    

    A { means the start of key - value pairs so after the first { you always need a double-quoted string.