Фильтрация вывода строки / извлечение одной пары ключ-значение - PullRequest
0 голосов
/ 17 декабря 2018

Это:

txtTaxRate.setText(GetURLContent.getData(sURL));

Выводит это:

{"taxrate":0.15,"year":2017,"developer":"","salary":10000.0,"status":"S"}

Как вывести ТОЛЬКО налоговую ставку (0,15)?Это пары json to string или key-value.Мой профессор сказал, что это можно сделать, «извлекая» что-то из этого вывода в одну строку, и он говорит, что я близко, но я действительно не знаю, куда идти.

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

Если вы точно знаете, что ваша строка всегда будет иметь формат, который вы указали, эта строка поможет:

txtTaxRate.setText(GetURLContent.getData(sURL).substring(11, 15));

Если вы не хотите использовать магические числа, вы можете использоватькомбинация indexOf and substring` для достижения этой цели, например так:

String data = GetURLContent.getData(sURL);
int fromIndex = data.indexOf("\"taxrate\":") + "\"taxrate\":".length();
int toIndex = data.indexOf(",\"year\"");
txtTaxRate.setText(data.substring(fromIndex, toIndex));

Очевидно, это не очень красиво.Вы можете использовать JSON-парсер для более общего решения.

0 голосов
/ 17 декабря 2018

GetURLContent.getData(sURL) возвращает строку, которую использует txtTaxRate.setText().Теперь, когда вы получаете строку, вы можете сначала преобразовать ее в JSON или другой простой способ, как показано ниже:

String s = GetURLContent.getData(sURL);
String[] arr = s.substring(1,s.length()-1).split(",");
String requiredText = Arrays.stream(arr).filter(s2 -> s2.contains("taxrate")).findFirst().get();

Теперь, когда вы выполните System.out.println(requiredText );, вы увидите вывод "taxrate":0.15.Также, пожалуйста, обратите внимание, что вам требуется java 8 для решения выше.

0 голосов
/ 17 декабря 2018

Вы можете использовать 2 метода: inStr() и substring().Вы можете найти их здесь: Класс String

Используйте этот код:

String str = "{\"taxrate\":0.15,\"year\":2017,\"developer\":\"\",\"salary\":10000.0,\"status\":\"S\"}";
String taxrate = str
        .substring(0, str.indexOf(","))
        .substring(str.indexOf(":") + 1);
System.out.println(taxrate);

напечатает:

0.15

Сначала вы получите строкудо первого появления ",".Затем в этой подстроке вы получите часть после ":".

...