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

Parse String with array format to List

我需要使用 ajax.

将 jslt 对象(列表)传递给 spring 控制器

该页面是 JSPX,我使用 EL(表达式语言)在 JS 代码中获取对象

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!

谢谢!

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

[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>]
]

看起来该示例可能缺少一个或多个“]”和或“[”。

如果这是 XML 或 Json,您将有幸使用图书馆。在这里,你只需要解析它。

尝试查看 Java String.split():

How to split a string in Java

所以你有这个格式:

[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" 上拆分剩余的字符串。

这让你(在这种情况下)看起来像三个部分:[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 是其中两个。如果可能的话,我建议不要重新发明轮子;从编程规范和可维护性的角度来看,最好使用现有格式(也可以轻松自动解析!)而不是创建自己的格式。