Re: [PHP] json_encode confusion

2011-11-11 Thread Richard Quadling
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

2011-11-10 Thread Dan Schaefer

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

2011-11-10 Thread DiRaven

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

2011-11-10 Thread DiRaven

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

2011-11-10 Thread Jim Lucas
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

2011-11-10 Thread Matijn Woudt
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

2011-11-10 Thread tamouse mailing lists
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