[ 
https://issues.apache.org/jira/browse/NIFI-5093?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matt Forrester updated NIFI-5093:
---------------------------------
    Description: 
ConvertAvroToJson does not follow the expectations of anyone who knows JSON or 
JavaScript when there are zero Avro records coming from upstream. For a zero 
length sequence the outputs are:

 

    JSON Container Options: array
     Wrap Single Record: false
     Result: {}
     Expected Result: ''
     Why is this wrong?: This has not been wrapped in an array as specified and 
in any no items were sent from upstream, not one item with zero fields

 

    JSON Container Options: array
     Wrap Single Record: true
     Result: [{}]
     Expected Result: '[]'
     Why is this wrong?: This is one item with no fields that was never sent 
from the upstream.

 

    JSON Container Options: none
     Wrap Single Record: false
     Result: ''
     Why is this wrong?: This is one item with no fields that was never sent 
from the upstream.

 

    JSON Container Options: none
     Wrap Single Record: true
     Result: ''
     Why is this wrong? This is one item with no fields that was never sent 
from the upstream.

 

IMHO these options are specifying two things for what should actually be one 
thing. In JSON, which is a subset of JavaScript an Object is represented as {} 
and an Array is represented as [].

If you have a stream of objects they could either:
 * Be wrapped in `[]` and seperated by comma's making the whole document valid 
JSON, for example `[]` or `[\{"name":"ben"},\{"name":"jane"}]`

 * Formatted as NDJSON which would be `''` (0 bytes) or 
`\{"name":"ben"}\n\{"name":"jane"}\n` where every line is valid JSON with a 
final new line at the end.

 

UPDATE: Have created a new Processor which follows the NDJSON spec closer with 
respect to new lines. The downstream SplitJSON seems much happier. It is 
available at [https://github.com/forbesmyester/NiFi-ConvertAvroToClassicJSON] 
.\{{}}

  was:
ConvertAvroToJson does not follow the expectations of anyone who knows JSON or 
JavaScript when there are zero Avro records coming from upstream. For a zero 
length sequence the outputs are:

 

    JSON Container Options: array
     Wrap Single Record: false
     Result: {}
     Expected Result: ''
     Why is this wrong?: This has not been wrapped in an array as specified and 
in any no items were sent from upstream, not one item with zero fields

 

    JSON Container Options: array
     Wrap Single Record: true
     Result: [{}]
     Expected Result: '[]'
     Why is this wrong?: This is one item with no fields that was never sent 
from the upstream.

 

    JSON Container Options: none
     Wrap Single Record: false
     Result: ''
     Why is this wrong?: This is one item with no fields that was never sent 
from the upstream.

 

    JSON Container Options: none
     Wrap Single Record: true
     Result: ''
     Why is this wrong? This is one item with no fields that was never sent 
from the upstream.

 

IMHO these options are specifying two things for what should actually be one 
thing. In JSON, which is a subset of JavaScript an Object is represented as {} 
and an Array is represented as [].

If you have a stream of objects they could either:
 * Be wrapped in '[]' and seperated by comma's making the whole document valid 
JSON, for example '[]' or '[\{"name":"ben"},\{"name":"jane"}]'

 * Formatted as NDJSON which would be '' (0 bytes) or 
'\{"name":"ben"}\n\{"name":"jane"}\n' where every line is valid JSON with a 
final new line at the end.

 

UPDATE: Have created a new Processor which follows the NDJSON spec closer with 
respect to new lines. The downstream SplitJSON seems much happier. It is 
available at [https://github.com/forbesmyester/NiFi-ConvertAvroToClassicJSON] 
.{{}}


> ConvertAvroToJson
> -----------------
>
>                 Key: NIFI-5093
>                 URL: https://issues.apache.org/jira/browse/NIFI-5093
>             Project: Apache NiFi
>          Issue Type: Bug
>    Affects Versions: 1.6.0
>         Environment: Ubuntu / Chromium
>            Reporter: Matt Forrester
>            Priority: Minor
>
> ConvertAvroToJson does not follow the expectations of anyone who knows JSON 
> or JavaScript when there are zero Avro records coming from upstream. For a 
> zero length sequence the outputs are:
>  
>     JSON Container Options: array
>      Wrap Single Record: false
>      Result: {}
>      Expected Result: ''
>      Why is this wrong?: This has not been wrapped in an array as specified 
> and in any no items were sent from upstream, not one item with zero fields
>  
>     JSON Container Options: array
>      Wrap Single Record: true
>      Result: [{}]
>      Expected Result: '[]'
>      Why is this wrong?: This is one item with no fields that was never sent 
> from the upstream.
>  
>     JSON Container Options: none
>      Wrap Single Record: false
>      Result: ''
>      Why is this wrong?: This is one item with no fields that was never sent 
> from the upstream.
>  
>     JSON Container Options: none
>      Wrap Single Record: true
>      Result: ''
>      Why is this wrong? This is one item with no fields that was never sent 
> from the upstream.
>  
> IMHO these options are specifying two things for what should actually be one 
> thing. In JSON, which is a subset of JavaScript an Object is represented as 
> {} and an Array is represented as [].
> If you have a stream of objects they could either:
>  * Be wrapped in `[]` and seperated by comma's making the whole document 
> valid JSON, for example `[]` or `[\{"name":"ben"},\{"name":"jane"}]`
>  * Formatted as NDJSON which would be `''` (0 bytes) or 
> `\{"name":"ben"}\n\{"name":"jane"}\n` where every line is valid JSON with a 
> final new line at the end.
>  
> UPDATE: Have created a new Processor which follows the NDJSON spec closer 
> with respect to new lines. The downstream SplitJSON seems much happier. It is 
> available at [https://github.com/forbesmyester/NiFi-ConvertAvroToClassicJSON] 
> .\{{}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to