Как мне создать данные в формате JSON - PullRequest
0 голосов
/ 20 марта 2012

У меня есть приложение Struts 2, в котором я использую плагин json Struts 2 для обработки json.

Теперь я хочу использовать сетку данных dojo для заполнения данных из действия.Я могу назвать действие.Все встроенные типы данных работают в действии.Однако, когда я использую пользовательский объект в своем классе, я получаю ошибки в классе действия.

Я хочу использовать ItemFileReadStore в качестве хранилища для сетки, которая нуждается в данных в следующем формате:

items: [{obj1},{obj2},{obj3},{obj4}]

Теперь у меня есть класс с именем Device.Я хочу отправить список объектов устройства обратно клиенту.Но как мне предоставить данные в указанном выше формате и использовать их на стороне клиента .?

Редактировать:

Я получаю следующую ошибку:

 E com.ibm.ws.webcontainer.webapp.WebApp logError SRVE0293E: [Servlet Error]-[com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: java.lang.reflect.InvocationTargetException]: com.ibm.ws.webcontainer.webapp.WebAppErrorReport: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: java.lang.reflect.InvocationTargetException
at com.ibm.ws.webcontainer.webapp.WebAppDispatcherContext.sendError(WebAppDispatcherContext.java:624)
at com.ibm.ws.webcontainer.srt.SRTServletResponse.sendError(SRTServletResponse.java:1071)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:725)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:852)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:917)
at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:924)
at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:852)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3610)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:274)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:926)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1557)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:173)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:202)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:766)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:896)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1527)

Что такоепричина этой ошибки.Мой класс действий:

jsonWrapper.setIdentifier("firstName");         

        jsonWrapper.getListItems().add(User.getUser("t2590pk"));            
        jsonWrapper.getListItems().add(User.getUser("t8923sm"));

        jsonWrapper.setItems(jsonWrapper.gson.toJson(jsonWrapper.getListItems()));

        System.out.println(jsonWrapper.getItems());

Конфигурация Struts:

<action name="jsonTest" class="com.dcx.ispeed.actions.JSONTest">            
        <result type="json">                
            <param name="excludeProperties">
                gson
            </param>                
        </result>
    </action>

Класс jsonWrapper:

/**


* 
 */
package com.dcx.ispeed.business;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;
import com.ibm.ws.http.HttpRequest;

/**
 * @author t2590pk
 *
 */
public class JSONWrapper {
    public Gson gson = new Gson();

    private String identifier;

    private String label;

    private String items;

    private List listItems = new ArrayList();

    public String getIdentifier() {
        return identifier;
    }

    public void setIdentifier(String identifier) {
        this.identifier = identifier;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    public String getItems() {
        return items;
    }

    public void setItems(String items) {
        this.items = items;
    }

    public List getListItems() {
        return listItems;
    }

    public void setListItems(List listItems) {
        this.listItems = listItems;
    }

    /**
     * 
     */
    public JSONWrapper() {
        System.out.println("Calling JSON wrapper constructor.");
    }   

}

Спасибо .. :)

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Вы можете использовать пакет Google Gson следующим образом

import com.google.gson.Gson;

String json = "{\"name\":\"ABC\",\"address\":\"some address\"}";
Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);

public class Person{
   public String name;
   public String address;
}

Примечание: вы должны реализовать конструктор по умолчанию и все методы получения и установки для класса Person.Массив в вашем случае будет Set

0 голосов
/ 23 марта 2012

это может произойти с вашей библиотекой gson, поэтому, пожалуйста, обновите вашу библиотеку gson и добавьте jsonException, когда вы используете json, который покажет, где в вашем коде исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...