通过GET参数传递复杂的数据结构?

时间:2012-03-19 22:15:27

标签: java url

我正在尝试将列表和地图作为GET参数传递,我想知道是否有特定的约定(或者最好是库),我可以这样做。具体来说,我想传递列表和地图。

列表相对容易,因为我们对分隔符进行了正确的URL编码(在本例中为逗号):

  

/图​​像/小猫?furColors =棕色,黑色

地图更复杂。我见过这样的事情:

  

/图​​像/小猫性质[furColors] =棕色,黑色&安培;属性[eyeColors] =蓝色

我也看到过这样的事情:

  

/图​​像/小猫属性= furColors%3Dbrown,黑色;?eyeColors%3Dblue;

我可以遵循一个很好的标准吗?此外,我碰巧使用Java和Spring(出于我无法控制的原因),并且我希望能够使用库来处理这个问题,最好是Spring可以解析的字符串。

2 个答案:

答案 0 :(得分:6)

您可以传递JSON数组或对象。为什么不使用现有的,完善的标准,而不是发明自己的标准?

或者protobuf或许更合适。

我宁愿做任何能够发展和保持自己的东西。我很懒。

注意GET请求字符串的1024字节限制。你只能这么复杂。

答案 1 :(得分:0)

google commerce search api获取一个页面,特别是限制部分,它们基本上会传递限制图,例如

&restrictBy=key1=val1,key2=val2,key3=val3

这与您的选项非常相似。我不知道任何公布的最佳做法或标准,我甚至不相信谷歌的认可具有与以往相同的重要性,但至少它已经完成并正在生产中。

对于一个库,使用一些适时的String.split可以工作,或者你可以查看Guava的MapSplitter