【问题标题】: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 块..

提前谢谢...

【问题讨论】:

标签: java json methods


【解决方案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 use try-catch.
    猜你喜欢
    • 2012-07-02
    • 2012-08-03
    • 2011-09-29
    • 2011-04-25
    • 1970-01-01
    • 2011-04-13
    • 2014-03-25
    • 2013-03-04
    • 2017-11-27
    相关资源
    最近更新 更多