Dear Sergey,
thank you for your fast response and your suggestion.
I am sorry, but it did not work. I've tried it before.
I have configured my JSONProvider now in that way
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.JSONProvider">
<property name="namespaceMap" ref="nstojns"/>
<property name="ignoreNamespaces" value="true"/>
<property name="attributesToElements" value="true"/>
<property name="inTransformElements">
<map>
<entry key="FeedbackData"
value="{http://xyz.com/serviceapi}FeedbackData"/>
<entry key="FeedbackEvent"
value="{http://xyz.com/serviceapi}FeedbackEvent"/>
</map>
</property>
</bean>
and send the following JSON-Object
{"FeedbackData":{"FeedbackEvent":{"accessProfile":"Test"}}}
However, after the unmarshalling the property accessProfile is null. If I
provided the accessProfile as @accessProfile within the JSON-Object everything
is fine. It seems the property attributesToElements has no effect.
Any other clue?
Regards,
Christian
Am Dienstag, 12. Juli 2011 um 18:43 schrieb Sergey Beryozkin:
- Hide quoted text -
> Hi,
>
> On Tue, Jul 12, 2011 at 5:08 PM, Christian Hartmann
> <[email protected]> wrote:
>> Hi there,
>>
>> I am using Apache CXF 2.4.1 and I want to POST a JSON-String to my
>> RestFul-Service.
>>
>> So I configure the following within my Spring 3.x configuration:
>>
>> <util:map id="nstojns" map-class="java.util.HashMap">
>> <entry key="http://xyz.com/serviceapi" value="serviceapi"/>
>> </util:map>
>>
>> <bean id="jsonProvider"
>> class="org.apache.cxf.jaxrs.provider.JSONProvider">
>> <property name="namespaceMap" ref="nstojns"/>
>> <property name="ignoreNamespaces" value="true"/>
>> <property name="inTransformElements">
>> <map>
>> <entry key="FeedbackData"
>> value="{http://xyz.com/serviceapi}FeedbackData"/>
>> <entry key="FeedbackEvent"
>> value="{http://xyz.com/serviceapi}FeedbackEvent"/>
>> </map>
>> </property>
>> </bean>
>>
>> <jaxrs:server id="cxfService"
>> address="${cxf.endpoint.shopservice.address}">
>> <jaxrs:serviceFactories>
>> <ref bean="feedbackFacadeFactory"/>
>> </jaxrs:serviceFactories>
>> <jaxrs:providers>
>> <ref bean="jsonProvider"/>
>> </jaxrs:providers>
>> </jaxrs:server>
>>
>> Now I can call my service and do a POST sending a JSON-Object like this:
>>
>> {"FeedbackData":{"FeedbackEvent":{"@accessProfile":"Test"}}}
>>
>> and the binding is done by JAXB based on a provided XSD without any problems.
>>
>> However I have to mention the ugly "@" for my attributes. Is there any way
>> to configure CXF and/or the JSONProvider not to have to use the "@" as a
>> marker for the attribute? If yes, how?
>
> Try adding
>
> <property name="attributesToElements" value="true"/>
>
> that should do it
>
> Cheers, Sergey
>
>> Any help will be appreciated.
>>
>> Regards,
>>
>> Christian
>
>
>
> --
> Sergey Beryozkin
>
> http://sberyozkin.blogspot.com
> Talend - http://www.talend.com