Разбор объекта JSON с использованием OGNL в struts 2

У меня есть класс действий, например

public class DataProcessor extends ActionSupport{

    private JSONObject object;

    public JSONObject getObject() {
        return object;
    }

    public void setObject(JSONObject object) {
        this.object = object;
    }

    @Override
    public String execute() throws Exception {
        .......
        return SUCCESS;
    }
} 

Мое отображение XML похоже на

<package name="default" extends="struts-default" namespace="/">
   <action name="process" class="com.demo.DataProcessor">
      <result type="success">home.jsp</result>
   </action>
</package>

на странице jsp, если я пишу <s:property value="object"/>, он печатает данные json. но если я напишу

<s:property value="object.name"/>

or

<s:property value="#object.name"/>

or

<s:property value="${#object.name}"/>  it is printing nothing.

Как я могу разобрать объект json на странице jsp?


person Lalit Chattar    schedule 01.03.2014    source источник
comment
У вас есть объект json, зачем вам его анализировать?   -  person Roman C    schedule 02.03.2014
comment
я получаю объект типа "{name:lalit, mobile:9999999999}", и он печатается в том же формате. я хочу напечатать имя и мобильный телефон отдельно.   -  person Lalit Chattar    schedule 02.03.2014
comment
Какой у тебя тип object? Это org.json.JSONObject?   -  person Aleksandr M    schedule 03.03.2014
comment
Объект JSON не является JavaBean, и вы не можете получить к нему доступ как есть. как говорит Александр, вы должны использовать свой собственный механизм доступа. Однако может быть проще преобразовать его на стороне сервера. Если вам это нужно только в JavaScript, то лучше парсить, как говорит Роман.   -  person Dave Newton    schedule 04.03.2014


Ответы (2)


Вам не нужно анализировать JSON, вам нужно извлечь из него значение. Предполагая, что ваш object равен org.json.JSONObject, вы можете получить от него значение, вызвав метод get и передав ключ в виде строки.

<s:property value="object.get('name')"/>
person Aleksandr M    schedule 03.03.2014

Вы можете анализировать JSON, используя библиотечную функцию parseJSON, как в этом примере.

<s:textfield id="name" name="name"/>
<s:textfield id="mobile" name="mobile"/>    
<script type="text/javascript">
  $(document).ready(function() {
    var obj = $.parseJSON('<s:property value="object"/>');
    $("name").val(obj.name);
    $("mobile").val(obj.mobile);
  });
</script>

Этот сценарий заменит значения (если они есть) из компонента действия, заполненного при отображении JSP. Текстовые поля должны быть соответствующим образом сопоставлены с компонентом действия.

person Roman C    schedule 02.03.2014