【发布时间】:2019-11-21 12:20:42
【问题描述】:
我在PayUMoney 中获得了这些数据并显示给用户但是问题如何以json 或键值对格式获取这些数据,任何人都知道,请帮助!!
addedon=2019-11-21+17%3A06%3A42&productinfo=FINE&firstname=Creataum+Test+User&
【问题讨论】:
标签: android
我在PayUMoney 中获得了这些数据并显示给用户但是问题如何以json 或键值对格式获取这些数据,任何人都知道,请帮助!!
addedon=2019-11-21+17%3A06%3A42&productinfo=FINE&firstname=Creataum+Test+User&
【问题讨论】:
标签: android
假设你已经把它作为字符串,下面的代码将从字符串中打印出键值对
String x ="addedon=2019-11-21+17%3A06%3A42&productinfo=FINE&firstname=Creataum+Test+User&";
String pair[] = x.split("&");
Log.e("pairs", Arrays.asList(pair).toString());
for (int i=0;i<pair.length;i++){
String key[] = pair[i].split("=");
Log.e("pair:","key= "+ key[0]+" value= "+key[1]);
}
【讨论】:
似乎该字符串既是 URL 编码(%3A)又是 JSON 编码(&amp;)。
您必须对字符串进行解码,然后通过'&' 拆分,然后通过'=' 将每对拆分为键和值。
您可以在此处查看如何进行 JSON 解码:Decoding JSON String in Java
可以使用 Java 的 URLDecoder 类来完成 URL 解码:https://docs.oracle.com/javase/7/docs/api/java/net/URLDecoder.html
对于这个例子,我假设唯一的编码字符是%3A 和&amp;。
String payumoney = "addedon=2019-11-21+17%3A06%3A42&productinfo=FINE&firstname=Creataum+Test+User&";
// String decoding.
payumoney = payumoney.replaceAll("%3A", "-");
payumoney = payumoney.replaceAll("&", "&");
HashMap<String, String> params = new HashMap<String, String>();
String[] pairs = payumoney.split("&");
for (String pair : pairs) {
String[] keyValue = pair.split("=");
params.put(keyValue[0], keyValue[1]);
}
【讨论】:
这看起来像是一个混合了 URL 编码(如 %3A 用于 :)和 HTML 字符(如 &amp; 用于 &)的字符串。
我相信您可以尝试对其进行解码,然后像 & 那样拆分数据以获取每个键的数据,然后进一步按 = 拆分以获取该键的值。
对于 URL 解码你可以试试
String decoded = java.net.URLDecoder.decode(url, "UTF-8");
【讨论】:
您可以简单地使用 String replaceAll() 函数来创建 json。
str= str.replaceAll("=", "\"");
str= str.replaceAll("&", "\",\"");
str= "{\""+ str+ "\"}";
【讨论】: