[
https://issues.apache.org/jira/browse/SOLR-2627?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13056905#comment-13056905
]
Yonik Seeley commented on SOLR-2627:
------------------------------------
RFC4627
"The names within an object SHOULD be unique."
"JSON parser MUST accept all texts that conform to the JSON grammar."
"SHOULD" is very specific (and a synonym for RECOMMENDED) and is not equivalent
to "MUST" in RFCs.
So I agree it's best practice to avoid repeated names in a JSON object, but a
parser that could not deal with repeated names is clearly not a conformant JSON
parser. Valid JSON may have repeated names in an object.
> Solr's JSON request format isn't valid JSON
> -------------------------------------------
>
> Key: SOLR-2627
> URL: https://issues.apache.org/jira/browse/SOLR-2627
> Project: Solr
> Issue Type: Bug
> Components: update
> Affects Versions: 3.2
> Reporter: Brian Pontarelli
> Priority: Critical
> Labels: json
>
> I've been working with Solr's JSON request and response to get it up and
> running in my application and it looks like the JSON request format is not
> properly formatted JSON. Here's an example of a request with multiple
> documents (from the Wiki):
> {code:javascript}
> {
> "add": {"doc": {"id" : "TestDoc1", "title" : "test1"} },
> "add": {"doc": {"id" : "TestDoc2", "title" : "another test"} }
> }
> {code}
> Unfortunately, this is not valid JSON because according to RFC-4627 section
> 2.2, "The names within an object SHOULD be unique." This means that defining
> the name "add" twice is not allowed. Instead, the JSON should use an array
> for multiple documents like this:
> {code:javascript}
> {
> "add": [{"doc": {"id" : "TestDoc1", "title" : "test1"}},
> {"doc": {"id" : "TestDoc2", "title" : "another test"}}]
> }
> {code}
> An alternate form that simplifies this entire thing is to remove the "doc"
> identifier as it doesn't appear to provide useful information. That form
> would be:
> {code:javascript}
> {
> "add": [{"id" : "TestDoc1", "title" : "test1"},
> {"id" : "TestDoc2", "title" : "another test"}]
> }
> {code}
> It looks like Noggit uses a stream based Parser that doesn't put these values
> into a Map or JavaBean, otherwise this would have revealed itself much
> sooner. I run into the issue when attempting to create a Map that I could
> pass to a JSON binder such as Jackson or Google-GSON. Given the current
> format, none of those tools will work with Solr.
> It also looks like Noggit is not really moving out of labs. It would be nice
> to use a more well known and active project for the JSON handling as it is
> quickly becoming the de-facto standard. I can open a ticket for that
> separately if needed and help out with the code.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]