Re: [PHP] json_encode confusion
On 10 November 2011 14:45, Bastien Koert phps...@gmail.com wrote: Morning all, I've been having some fun with converting a text data file import into a json object for storage. I have a text file that is pipe delimited coming in via an upload. The first row is the headers and the second row is the data. Using this code: $data = file(inline_Nov_8_2011.txt); if(count($data)==2){ $keys = explode(|, $data[0]); $fields = explode(|, $data[1]); $combine = array_combine($keys, $fields); $json = json_encode($combine); } After the combine, I get an array that looks like this Array ( ['Legal Last Name '] = Andros ['Legal Middle Initial '] = ['Legal First Name '] = Marisa ['Maiden/Other Name '] = ['Social Insurance No. '] = 123456789 ['Date of Birth '] = 2/1/1988 ['Gender '] = Female ) But the json encoded value looks like this (there are way more elements but this should be enough to represent what I need to do). {null:Andros,null:,null:Marisa,null:,null:123456789,null:2\/1\/1988,null:Female} I have been googling for info about allowed values for the json keys, but can't seem to find a clear doc on what is allowed and what isn't. I have tried unquoted keys, replaced the spaced with underscores but nothing I do seems to help. When I echo out the json encoded data, the keys are all nulls. Can someone point me in the correct direction? It may be that I need to manually create the key names as an array first, which I was hoping to avoid since the file format coming from the client is still in some flux. ?php $data = array( 'Legal Last Name ' = 'Andros', 'Legal Middle Initial ' = '', 'Legal First Name ' = 'Marisa', 'Maiden/Other Name ' = '', 'Social Insurance No. ' = 123456789, 'Date of Birth ' = '2/1/1988', 'Gender ' = 'Female' ); echo json_encode($data, JSON_FORCE_OBJECT); ? outputs ... {Legal Last Name :Andros,Legal Middle Initial :,Legal First Name :Marisa,Maiden\/Other Name :,Social Insurance No. :123456789,Date of Birth :2\/1\/1988,Gender :Female} -- Richard Quadling Twitter : EE : Zend : PHPDoc : Fantasy Shopper @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY : bit.ly/lFnVea : fan.sh/6/370 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] json_encode confusion
On 11/10/2011 09:45 AM, Bastien Koert wrote: Morning all, I've been having some fun with converting a text data file import into a json object for storage. I have a text file that is pipe delimited coming in via an upload. The first row is the headers and the second row is the data. Using this code: $data = file(inline_Nov_8_2011.txt); if(count($data)==2){ $keys = explode(|, $data[0]); $fields = explode(|, $data[1]); $combine = array_combine($keys, $fields); $json = json_encode($combine); } After the combine, I get an array that looks like this Array ( ['Legal Last Name '] = Andros ['Legal Middle Initial '] = ['Legal First Name '] = Marisa ['Maiden/Other Name '] = ['Social Insurance No. '] = 123456789 ['Date of Birth '] = 2/1/1988 ['Gender '] = Female ) But the json encoded value looks like this (there are way more elements but this should be enough to represent what I need to do). {null:Andros,null:,null:Marisa,null:,null:123456789,null:2\/1\/1988,null:Female} I have been googling for info about allowed values for the json keys, but can't seem to find a clear doc on what is allowed and what isn't. I have tried unquoted keys, replaced the spaced with underscores but nothing I do seems to help. When I echo out the json encoded data, the keys are all nulls. Can someone point me in the correct direction? It may be that I need to manually create the key names as an array first, which I was hoping to avoid since the file format coming from the client is still in some flux. Just a thought: Try removing the spaces altogether, not by replacing them with underscores. -- Dan -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] json_encode confusion
On 11/10/2011 05:45 PM, Bastien Kurt wrote: Morning all, I've been having some fun with converting a text data file import into a json object for storage. I have a text file that is pipe delimited coming in via an upload. The first row is the headers and the second row is the data. Using this code: $data = file(inline_Nov_8_2011.txt); if(count($data)==2){ $keys = explode(|, $data[0]); $fields = explode(|, $data[1]); $combine = array_combine($keys, $fields); $json = json_encode($combine); } After the combine, I get an array that looks like this Array ( ['Legal Last Name '] = Andros ['Legal Middle Initial '] = ['Legal First Name '] = Marisa ['Maiden/Other Name '] = ['Social Insurance No. '] = 123456789 ['Date of Birth '] = 2/1/1988 ['Gender '] = Female ) But the json encoded value looks like this (there are way more elements but this should be enough to represent what I need to do). {null:Andros,null:,null:Marisa,null:,null:123456789,null:2\/1\/1988,null:Female} I have been googling for info about allowed values for the json keys, but can't seem to find a clear doc on what is allowed and what isn't. I have tried unquoted keys, replaced the spaced with underscores but nothing I do seems to help. When I echo out the json encoded data, the keys are all nulls. Can someone point me in the correct direction? It may be that I need to manually create the key names as an array first, which I was hoping to avoid since the file format coming from the client is still in some flux. Give the incoming input example, please as well as the desired output. -- Best regards, DiRaven -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] json_encode confusion
On 11/10/2011 05:45 PM, Bastien Koert wrote: Can someone point me in the correct direction? It may be that I need to manually create the key names as an array first, which I was hoping to avoid since the file format coming from the client is still in some flux. ?php //$data = file(inline_Nov_8_2011.txt); $data = array('Legal Last Name|Legal Middle Initial|Legal First Name|Maiden/Other Name|Social Insurance No.|Date of Birth|Gender', 'Andros||Marisa||123456789|2/1/1988|Female'); $json = ''; if(count($data)==2){ $keys = explode(|, $data[0]); $fields = explode(|, $data[1]); $combine = array_combine($keys, $fields); $json = json_encode($combine); } echo $json; ? That's the code I've just used. And it gave me perfect output: {Legal Last Name:Andros,Legal Middle Initial:,Legal First Name:Marisa,Maiden\/Other Name:,Social Insurance No.:123456789,Date of Birth:2\/1\/1988,Gender:Female} What version of the PHP do you use? -- Best regards, DiRaven -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] json_encode confusion
On 11/10/2011 6:45 AM, Bastien Koert wrote: Morning all, I've been having some fun with converting a text data file import into a json object for storage. I have a text file that is pipe delimited coming in via an upload. The first row is the headers and the second row is the data. Using this code: $data = file(inline_Nov_8_2011.txt); if(count($data)==2){ $keys = explode(|, $data[0]); $fields = explode(|, $data[1]); $combine = array_combine($keys, $fields); $json = json_encode($combine); } After the combine, I get an array that looks like this Array ( ['Legal Last Name '] = Andros ['Legal Middle Initial '] = ['Legal First Name '] = Marisa ['Maiden/Other Name '] = ['Social Insurance No. '] = 123456789 ['Date of Birth '] = 2/1/1988 ['Gender '] = Female ) But the json encoded value looks like this (there are way more elements but this should be enough to represent what I need to do). {null:Andros,null:,null:Marisa,null:,null:123456789,null:2\/1\/1988,null:Female} I have been googling for info about allowed values for the json keys, but can't seem to find a clear doc on what is allowed and what isn't. I have tried unquoted keys, replaced the spaced with underscores but nothing I do seems to help. When I echo out the json encoded data, the keys are all nulls. Can someone point me in the correct direction? It may be that I need to manually create the key names as an array first, which I was hoping to avoid since the file format coming from the client is still in some flux. Looking at your input array example, I see that you have trailing spaces in your keys. Looking at the working example of DiRaven, the only difference that I see with his example is that the input key values do not have a trailing spaces. json is probably having an issue with that trailing spaces. -- Jim Lucas http://www.cmsws.com/ http://www.cmsws.com/examples/ http://www.bendsource.com/ C - (541) 408-5189 O - (541) 323-9113 H - (541) 323-4219 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] json_encode confusion
On Thu, Nov 10, 2011 at 5:42 PM, Jim Lucas li...@cmsws.com wrote: On 11/10/2011 6:45 AM, Bastien Koert wrote: Morning all, I've been having some fun with converting a text data file import into a json object for storage. I have a text file that is pipe delimited coming in via an upload. The first row is the headers and the second row is the data. Using this code: $data = file(inline_Nov_8_2011.txt); if(count($data)==2){ $keys = explode(|, $data[0]); $fields = explode(|, $data[1]); $combine = array_combine($keys, $fields); $json = json_encode($combine); } After the combine, I get an array that looks like this Array ( ['Legal Last Name '] = Andros ['Legal Middle Initial '] = ['Legal First Name '] = Marisa ['Maiden/Other Name '] = ['Social Insurance No. '] = 123456789 ['Date of Birth '] = 2/1/1988 ['Gender '] = Female ) But the json encoded value looks like this (there are way more elements but this should be enough to represent what I need to do). {null:Andros,null:,null:Marisa,null:,null:123456789,null:2\/1\/1988,null:Female} I have been googling for info about allowed values for the json keys, but can't seem to find a clear doc on what is allowed and what isn't. I have tried unquoted keys, replaced the spaced with underscores but nothing I do seems to help. When I echo out the json encoded data, the keys are all nulls. Can someone point me in the correct direction? It may be that I need to manually create the key names as an array first, which I was hoping to avoid since the file format coming from the client is still in some flux. Looking at your input array example, I see that you have trailing spaces in your keys. Looking at the working example of DiRaven, the only difference that I see with his example is that the input key values do not have a trailing spaces. json is probably having an issue with that trailing spaces. That might be a possibility, but I suspect that the single quotes around the keys might be a problem. I haven't tried it though. Matijn -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] json_encode confusion
On Thu, Nov 10, 2011 at 11:24 AM, Matijn Woudt tijn...@gmail.com wrote: On Thu, Nov 10, 2011 at 5:42 PM, Jim Lucas li...@cmsws.com wrote: On 11/10/2011 6:45 AM, Bastien Koert wrote: Morning all, I've been having some fun with converting a text data file import into a json object for storage. I have a text file that is pipe delimited coming in via an upload. The first row is the headers and the second row is the data. Using this code: $data = file(inline_Nov_8_2011.txt); if(count($data)==2){ $keys = explode(|, $data[0]); $fields = explode(|, $data[1]); $combine = array_combine($keys, $fields); $json = json_encode($combine); } After the combine, I get an array that looks like this Array ( ['Legal Last Name '] = Andros ['Legal Middle Initial '] = ['Legal First Name '] = Marisa ['Maiden/Other Name '] = ['Social Insurance No. '] = 123456789 ['Date of Birth '] = 2/1/1988 ['Gender '] = Female ) But the json encoded value looks like this (there are way more elements but this should be enough to represent what I need to do). {null:Andros,null:,null:Marisa,null:,null:123456789,null:2\/1\/1988,null:Female} I have been googling for info about allowed values for the json keys, but can't seem to find a clear doc on what is allowed and what isn't. I have tried unquoted keys, replaced the spaced with underscores but nothing I do seems to help. When I echo out the json encoded data, the keys are all nulls. Can someone point me in the correct direction? It may be that I need to manually create the key names as an array first, which I was hoping to avoid since the file format coming from the client is still in some flux. Looking at your input array example, I see that you have trailing spaces in your keys. Looking at the working example of DiRaven, the only difference that I see with his example is that the input key values do not have a trailing spaces. json is probably having an issue with that trailing spaces. That might be a possibility, but I suspect that the single quotes around the keys might be a problem. I haven't tried it though. Matijn -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php Maybe use preg_split instead of explode? '/\s*|\s*/' -- assuming the spaces between fields aren't important... -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php