【问题标题】:How to parse this queryString which is a resultant of JSON response [closed]如何解析作为 JSON 响应结果的 queryString [关闭]
【发布时间】:2013-05-14 12:51:07
【问题描述】:

我已经解析了一个 JSON 响应并得到了下面的字符串:

String queryString = "AQB=1&v1=somev1data&v25=somev25data&URL=http://www.someurl.com/configure/getvalues/request1=req1Passed&data2=somedataPassed&ce=UTF-8&ARB=1";

当我拆分上面的查询字符串时,输出应该是:

AQB=1
v1=somev1data
v25=somev25data
URL=http://www.someurl.com/configure/getvalues/request1=req1Passed&data2=somedataPassed
ce=UTF-8
ARB=1

注意:
queryString 总是变化的,URL 参数也总是变化的。 AQB,v1.....v30,p1....p30,ce,pre,pe,URL,ARB 都是预定义的变量名。

【问题讨论】:

  • URL 参数未编码,因此无法知道它在哪里结束,因此任何解析算法都可能会在遇到第一个& 时停止。
  • 你在 20 分钟前发布了同样的问题。为什么你又发帖了
  • 人们对 String3、String31、String32 感到困惑,所以我在新线程中发布的原因。

标签: java json query-string


【解决方案1】:

除非 URL 参数经过正确的 URL 编码,否则这是不可能的,因此“&”字符将被转义,以免被解释为字段分隔符。

字符串应该这样编码:

String queryString = "AQB=1&v1=somev1data&v25=somev25data&URL=http%3A%2F%2Fwww.someurl.com%2Fconfigure%2Fgetvalues%2Frequest1%3Dreq1Passed%26data2%3DsomedataPassed&ce=UTF-8&ARB=1";

由于它在您的问题中被格式化,因此无法连续解析字符串。

【讨论】:

  • 我使用了 queryString = URLDecoder.decode(JSONResponse, "UTF-8");结果我得到了上述结果。
  • 你是对的。我现在得到了解决方案。我不得不将 JSON 响应作为 queryString 并在用 '&' 拆分后,结果我需要使用 URLDecoder.decode();谢谢大家的时间:)
【解决方案2】:
StringTokenizer st = new StringTokenizer(queryString, "&");
while (st.hasMoreTokens()) {
  System.out.println(st.nextToken());
}

正如另一位海报所暗示的,现在唯一剩下的就是处理 URL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    相关资源
    最近更新 更多