【问题标题】:Parse String with array format to List将具有数组格式的字符串解析为列表
【发布时间】:2018-02-07 07:32:07
【问题描述】:

我需要使用 ajax 将 jslt 对象(列表)传递给 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&lt;DiaLaboral&gt; 中解析它...但我不能

PD: 在${diasLaborales} 中没有引号时不起作用

var diasLaborales = ${diasLaborales};

给出错误unexpected token &lt; ...

谢谢


编辑 2:

解决方案是发送一个 json!

谢谢!

【问题讨论】:

  • 你能发布你的代码吗?你试过什么?
  • 一定要吗?该字符串看起来像是来自其他程序,所以如果可能的话,您能否让源程序生成更好的格式,例如 JSON?
  • 我编辑了包含更多信息的帖子。谢谢!

标签: java json ajax spring-mvc el


【解决方案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>]
]

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

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

尝试查看 Java String.split():

How to split a string in Java

【讨论】:

  • 感谢您的帮助,我把问题提得很糟糕
【解决方案2】:

所以你有这个格式:

[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=&lt;null&gt;, rangosHorario=&lt;null&gt;, id=&lt;null&gt;, version=&lt;null&gt;]

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

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 就是其中的两个。如果可能的话,我建议不要重新发明轮子;从编程规范和可维护性影响的角度来看,使用现有格式(也很容易自动解析!)比创建自己的格式更好。

【讨论】:

    猜你喜欢
    • 2014-12-22
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多