如何在 Java 中验证字符串是不是为 JSON?
Posted
技术标签:
【中文标题】如何在 Java 中验证字符串是不是为 JSON?【英文标题】:How to validate a string is JSON or not in Java?如何在 Java 中验证字符串是否为 JSON? 【发布时间】:2017-06-10 13:00:07 【问题描述】:我已经说过,我的问题不同...问题已经问过here,但我想要一个 java 中的预定义方法,它检查给定字符串是否为 json 格式。
如果没有预定义的方法,那么至少告诉代码是否检查 JSON 格式,而不使用 try catch 块..
提前谢谢...
【问题讨论】:
try-catch
有什么问题?
使用try-catch
可以轻松完成,如图here。
How to check whether a given string is valid JSON in Java的可能重复
【参考方案1】:
public boolean isValidJson(String jsonStr)
Object json = new JSONTokener(jsonStr)).nextValue();
if (json instanceof JSONObject || json instanceof JSONArray)
return true;
else
return false;
只需在此函数中传递任何字符串。
【讨论】:
var jsonStr 没有出现在函数体中 刚刚修复了变量命名。感谢提及 我认为这个需要一些改进。下面的示例返回 true,例如 "名称" : mkj123 mk 【参考方案2】:import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
*
* @param inputJosn
* @return
* @throws IOException
* @throws JsonParseException
* @throws JsonProcessingException
*/
private static boolean isJsonValid(String inputJosn) throws JsonParseException, IOException
ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY);
JsonFactory factory = mapper.getFactory();
JsonParser parser = factory.createParser(inputJosn);
JsonNode jsonObj = mapper.readTree(parser);
System.out.println(jsonObj.toString());
return true;
【讨论】:
【参考方案3】:从字符串中使用 JSONObject 的构造函数
try
JSONObject o = new JSONObject(yourString);
catch (JSONException e)
LOGGER.error("No valid json");
【讨论】:
有什么方法吗?哪个不使用 try catch 块? AFAIK 这是更好的方法,您可以构建一个包含该块的方法以避免编写多个catch。根据您的要求可以接受吗? 感谢您的回复。我只是不想使用 try catch 块。就像在javascript中一样,我们有一个预定义的函数来验证字符串是否为json..所以我认为java中有什么东西可以自动检查有效的json..我想要boolean jsIsValid=method(string); @edsheeran 首先,Java 不是 JavaScript。处理它。甚至in JavaScript you are supposed to usetry-catch
.以上是关于如何在 Java 中验证字符串是不是为 JSON?的主要内容,如果未能解决你的问题,请参考以下文章
java中将map转成json时,如何将map中的整型数字在转成json后,变成字符串,而不是整型。