> -----Original Message-----
> From: KARR, DAVID (ATTCINW)
> Sent: Thursday, October 01, 2009 9:28 AM
> To: [email protected]
> Subject: RE: How to make clean json, instead of xml-ish json?
> 
> > -----Original Message-----
> > From: KARR, DAVID (ATTCINW)
> >
> > I have a REST prototype using CXF that produces reasonable looking
> XML,
> > and almost reasonably looking JSON.  The JSON it produces is
> "xml-ish".
> >
> > For instance, the sample XML I get is the following:
> >
> > <Item>
> >  <description>def</description>
> >  <features>
> >   <feature>123</feature>
> >   <feature>456</feature>
> >  </features>
> >  <id>1</id>
> >  <title>abc</title>
> > </Item>
> >
> > The JSON is this:
> >
> >
>
{"Item":{"description":"def","features":{"feature":[123,456]},"id":1,"t
> > i
> > tle":"abc"}}
> >
> > A nicer JSON result would have been this:
> >
> >
>
{"Item":{"description":"def","features":[123,456],"id":1,"title":"abc"}
> > }
> >
> > Is it possible to modify just the JSON results, but still have the
> "out
> > of the box" XML results?
> 
> Related to this, I noticed the "Dealing with JSON array serialization
> issues" section in the user guide.  I have a feeling this is telling
me
> that setting "serializeAsArray" and "arrayKeys" in my JSONProvider.
> I'm
> building a test for this now.  Even if this works, I'd have to say
that
> this documentation could use a clearer explanation of this, perhaps
> with
> more fully-elaborated examples.  The documentation for this is quite
> brief.  Full examples showing "before" and "after" would be useful.
> There is a link to another example that supposedly provides more info,
> but it only shows the beans.xml file, without any elaboration or
> example.

My change to "serializeAsArray" and "arrayKeys" in a JSONProvider didn't
do anything. The JSON output didn't change.

The following are the relevant pieces of my beans.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans";
       xmlns:util="http://www.springframework.org/schema/util";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:jaxws="http://cxf.apache.org/jaxws";
        xmlns:jaxrs="http://cxf.apache.org/jaxrs";
        xmlns:cxf="http://cxf.apache.org/core";
        xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemascore.xsd";>

        <import resource="classpath:META-INF/cxf/cxf.xml" />
        <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"
/>
        <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
    <import
resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
    
    <jaxrs:server name="restcatalogserver" address="/rest">
        <jaxrs:features>
            <cxf:logging/>
        </jaxrs:features>
        <jaxrs:providers>
            <ref bean="jsonProvider"/>
        </jaxrs:providers>
         
        <jaxrs:serviceBeans>
            <ref bean="catalog"/>
        </jaxrs:serviceBeans>
    </jaxrs:server>
     
    <bean id="jsonProvider"
class="org.apache.cxf.jaxrs.provider.JSONProvider">
        <property name="serializeAsArray" value="true"/>
        <property name="arrayKeys">
            <list>
                <value>features</value>
            </list>
        </property> 
    </bean>
    <bean id="catalog" class="com.att.ecom.catalog.Catalog">
    </bean>
</beans>

Reply via email to