从java中包含JSON字符串和普通字符串的字符串中筛选JSON字符串

从java中包含JSON字符串和普通字符串的字符串中筛选JSON字符串,java,json,Java,Json,我陷入了一个问题,我必须从一个字符串中过滤json数据,这个字符串是json字符串和普通文本的组合 示例:此消息包含您所需的所有详细信息{“姓名”:“xyz”,“年龄”:“21”,“地点”:“sdf”,“号码”:“7689”}在该页面中检查,您将获得详细信息。 我需要从给定的字符串中提取json对象 预期的结果仅为:{“name”:“xyz”,“age”:“21”,“place”:“sdf”,“number”:“7689”} 在Java中是否有任何干净的方法可以做到这一点。 解决这个问题的一种方

我陷入了一个问题,我必须从一个字符串中过滤json数据,这个字符串是json字符串和普通文本的组合

示例:
此消息包含您所需的所有详细信息{“姓名”:“xyz”,“年龄”:“21”,“地点”:“sdf”,“号码”:“7689”}在该页面中检查,您将获得详细信息。

我需要从给定的字符串中提取json对象

预期的结果仅为:
{“name”:“xyz”,“age”:“21”,“place”:“sdf”,“number”:“7689”}

在Java中是否有任何干净的方法可以做到这一点。 解决这个问题的一种方法是删除非json字符串并提取json对象。
但在我看来,这是一种糟糕的方法。

如果没有其他类似JSON的部分,您可以只提取第一个
{
和最后一个
}
之间的部分,包括两端:

int start=str.indexOf('{');
int end=str.lastIndexOf('}');
String json=str.substring(start,end+1);
当然,如果字符串可能不包含任何内容,您可能需要检查
start
end
是否都是非负数(因此字符实际上是存在的)。

还要注意,JSON也可以是一个数组,因此您可以尝试检查第一个
[
和最后一个
]
对是否位于
{…}
之外,但最后单个值也是有效的JSON(如
true
false
1
,等等)。考虑到每件事,正确地编写这项任务并不是一件令人愉快的事情。

一个java字符串中应该包含多个json字符串吗?不,只有一个json字符串