首先,我的代码运行正常。没有什么需要做的,但是当我从其他地方复制代码的某些部分时,我不完全理解这里发生的事情并希望得到解释来学习一些东西。
我使用play框架并向我的控制器类发送带有ID和分数的AJAX POST。我将这些参数放入字符串并将其保存在我的数据库中。
Map<String, String[]> parameters = request().body().asFormUrlEncoded();
String questionIDInput = parameters.get("questionID")[0];
String voteScoreInput = parameters.get("score")[0];
我没有得到的部分是:.get("questionID")[0]; / .get("score")[0];
。
为什么那里有两个零?地图是某种长字符串,我使用"questionID / score"
作为查找值的键吗?这真的让我很困惑,请赐教。
答案 0 :(得分:8)
parameters.get("questionID")
返回键&#34; questionID&#34;的值。该值是一个String数组(String[]
),因此parameters.get("questionID")[0]
为您提供该数组的第一个String
。
请注意,此代码假定Map中存在"questionID"
键,并且该键的值为非空数组。如果这些假设中的任何一个都是假的,那么您将获得NullPointerException
或ArrayIndexOutOfBoundsException
。
答案 1 :(得分:2)
Map
有键和值,与键对应。
在地图中,键的类型为String
,而值的类型为String[]
(String
个对象的数组)。
当您执行parameters.get("questionID")
时,这将获取String[]
数组,该数组对应于值等于"questionId"
的键。
为了获取返回数组的第一个元素,使用了[0]
。