将数组格式的字符串解析为List

时间:2017-08-29 18:24:17

标签: java json ajax spring-mvc el

我需要使用ajax将jslt对象(List)传递给spring控制器。

该页面是JSPX,我使用EL(表达式语言)

在JS代码中获取de Object
var diasLaborales = "${diasLaborales}";

$.ajax({ 
                url: './configuracionagendas/addRangoHorario.json',
                type: 'POST',
                data: {diasLaborales: diasLaborales}
....
...
.....

var diasLaborales的结果是具有此格式的字符串

[DiaLaboral
  [idDia=1,
   nombreDia=Lunes,
   configuracionAgenda=<null>,
   rangosHorario=<null>,
   id=<null>,
   version=<null>],
  DiaLaboral[idDia=2,
   nombreDia=Martes,
   configuracionAgenda=<null>,
   rangosHorario=<null>,
   id=<null>,version=<null>],
  DiaLaboral[
   idDia=3,
   nombreDia=Miércoles,
   configuracionAgenda=<null>,
   rangosHorario=<null>,
   id=<null>,version=<null>]
]

然后我可以将这个生成的字符串传递给控制器​​,但我需要在List<DiaLaboral>中解析...但我不能

PD: 在${diasLaborales}

中没有引号时无效
var diasLaborales = ${diasLaborales};

发出错误unexpected token < ...

由于

编辑2:

解决方案是发送一个json!

谢谢!

2 个答案:

答案 0 :(得分:1)

看起来你的格式如下,对吗?

del[0]

看起来这个例子可能缺少一个或多个&#34;]&#34;和/或&#34; [&#34;。

如果这是XML或Json,您可以使用库。在这里,你只需要解析它。

尝试查看Java String.split():

How to split a string in Java

答案 1 :(得分:1)

所以你有这种格式:

[DiaLaboral
  [idDia=1,
   nombreDia=Lunes,
   configuracionAgenda=<null>,
   rangosHorario=<null>,
   id=<null>,
   version=<null>],
  DiaLaboral[idDia=2,
   nombreDia=Martes,
   configuracionAgenda=<null>,
   rangosHorario=<null>,
   id=<null>,version=<null>],
  DiaLaboral[
   idDia=3,
   nombreDia=Miércoles,
   configuracionAgenda=<null>,
   rangosHorario=<null>,
   id=<null>,version=<null>]
]

您可能希望拆分输入,以便拥有单独的DiaLaboral部分,例如:

  1. 删除前导"[Dialaboral"和尾随"]"
  2. 拆分",Dialaboral"上的剩余字符串。
  3. 这使你(在这种情况下)看起来像三件:[idDia=1, nombreDia=Lunes, configuracionAgenda=<null>, rangosHorario=<null>, id=<null>, version=<null>]

    然后,您可以使用辅助函数解析每个部分:

    public static DiaLaboral stringToDL(String input) {
        // remove leading "[" and trailing "]"
        // split on ","
        // for each resulting string:
            // split on "="
            // use the resulting two strings as key & value to initialize DiaLaboral
    }
    

    注意:正如一些人所提到的,创建了几种数据类型来将数据存储为文本并轻松将其转换回程序数据/对象。 XML和JSON是其中两个。如果可能的话,我建议不要重新发明轮子;从编程规范和可维护性的角度来看,使用现有格式(也可以很容易地自动解析!)比创建自己的格式更好。