Java-如何从字符串中获取键和值



我有一个字符串

String responseFirst:
{
"1": "1930",
"2": "ABC Partners",
"3": "AB Part Mns NCA MS",
"4": 18668800,
"5": "6857.T",
"6": "J1730413",
"7": " Holy Ltd"
}

从这个响应(存储在String中(中,需要分别提取所有键和值。

这里唯一的条件是不使用JSON库,因为我们想要使用解决方案的地方不能使用JSON库

尝试一下;

String[] stringArray =  responseFirst.split(",")
for(String kvPair: stringArray) {
String[] kv = kvPair.split(":");
String key = kv[0].substring(1).replace('"', 'u0020').trim();
String value = kv[1].substring(1, kv[1].length() - 1).replace('"', 'u0020').trim();
// Now do with key whatever you want with key and value...
if(key.equals("somekey")) {
// Do something with value if the key is "somekey"...
}
}

这里唯一的条件是不使用JSON库

由于输入看起来是JSON,所以使用JSON解析器

您可以自己编写,但所有的JSON解析器都是开源的,因此您可以获得源代码并直接使用解析器1,而不是从头开始编写自己的解析器。

这样,您就不依赖json,而是拥有自己的代码。是否实际修改该代码,或按原样使用,完全取决于您1

1(确保您没有违反任何许可协议

使用来自(java.lang.String(的.split()

String[] kvPairs = "key1":"value1","key2":"value2","key3":"value3".split(",");

这将为您提供一个包含以下元素的数组kvPairs:

key1:value1
key2:value2
key3:value3

现在对KvPars数组进行迭代,然后再次拆分以获得结果:

for(String kvPair: kvPairs) {
String[] kv = kvPair.split(":");
String key = kv[0];
String value = kv[1];
// Now do with key whatever you want with key and value...
if(key.equals("specialkey")) {
// Do something with value if the key is "specialvalue"...
}
}

您可以使用Nashorn来完成它。它从Java 8开始就可用了。

String json = "{...}";
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("nashorn");
Map m = (Map) engine.eval("(function(){ return " + json + " })()");

最新更新