java从字符串

时间:2016-11-01 05:36:18

标签: java

如何从此字符串中获取currentname

[{"name":"fra"},{"name":"Ue","changedToAt":1447121046000},
{"name":"Nn","changedToAt":1463698483000},
{"name":"currentname","changedToAt":1473109797000}]

还有像这样的另一个字符串

[{"name":"fra"},{"name":"Ue","changedToAt":1447121046000},
{"name":"currentname","changedToAt":1473109797000}]

甚至是

[{"name":"fra"},{"name":"currentname","changedToAt":1447121046000}]

甚至是

[{"name":"currentname"}]

currentname是一个变量,有一天"jim"可能会"max"另一天{{1}}请帮助

2 个答案:

答案 0 :(得分:1)

假设您知道如何解析字符串,最终会得到如下结构:

class NameChange {
    private final String name;
    private final Date timeOfChange;
}

List<NameChange> nameChanges;

使用Java 8,您可以使用以下命令获取当前名称:

Optional<String> currentName = nameChanges.stream()
    .max(Comparator.comparing(NameChange::getTimeOfChange))
    .map(NameChange::getName);

它返回Optional以允许列表中没有名称的可能性。

如果您使用gson进行解析,则更容易:

Gson gson = new Gson();
Arrays.stream(gson.fromJson(input, NameChange[].class))
    ...

答案 1 :(得分:0)

你可以使用regular expression,像这样的模式

String pattern="\"name\":\"([a-zA-Z]+)\"((,\"changedToAt\":[0-9]+\}\])|(\}\]))";

所需的结果将在group[1]

请在此处查看所有给定样品的示例:

http://fiddle.re/atkvba (只需按下Java按钮)