Как я могу токенизировать массив объектов json? - PullRequest
0 голосов
/ 12 февраля 2019

Привет, мне нужно токенизировать массив объектов json, но я не уверен, как это сделать.

В настоящее время у меня есть этот фрагмент:

StringTokenizer tokenizer = new StringTokenizer(request, "{}:,\"");
Map<String, String> properties = new HashMap<String, String>();
while(tokenizer.hasMoreTokens()) {
    String key = tokenizer.nextToken(); 
    String value = tokenizer.nextToken();
    properties.put(key, value);
}

Этот фрагмент позволяет мне токенизировать обычный (не сложный) объект json, чтобы я мог получить значение, используя ключ в качестве поиска,Однако он не работает для сложных объектов в форме, подобной [{"Foo":"Bar", "XYZ":12}, {"ABC":16, "Foo": "Bar"}...]

Так что мне было интересно, как я могу токенизировать массив объектов json?

1 Ответ

0 голосов
/ 12 февраля 2019

Regex не подходит для анализа или токенизации JSON.Вместо этого проанализируйте JSON с помощью синтаксического анализатора, например, Gson :

String json = "[{\"Foo\":\"Bar\", \"XYZ\":12}, {\"ABC\":16, \"Foo\": \"Bar\"}]";
Map<String, String>[] result = new Gson().fromJson(json, new TypeToken<Map<String, String>[]>() {}.getType());
System.out.println(Arrays.toString(result));

выведет ниже показ двух объектов Map:

[{Foo=Bar, XYZ=12}, {ABC=16, Foo=Bar}]
...