<分区>
我有一个类似 - {"state":1,"cmd":1}
的字符串,我需要将其与生成的输出进行比较,但在生成的输出中顺序不断变化,即有时它{"state":1,"cmd":1}
其他时候是 {"cmd":1,"state":1}
。
目前我正在使用 equals()
方法进行比较,在这种情况下有什么更好的方法来验证两个字符串。我担心的只是两个条目都存在于字符串中,顺序不是 imp。
<分区>
我有一个类似 - {"state":1,"cmd":1}
的字符串,我需要将其与生成的输出进行比较,但在生成的输出中顺序不断变化,即有时它{"state":1,"cmd":1}
其他时候是 {"cmd":1,"state":1}
。
目前我正在使用 equals()
方法进行比较,在这种情况下有什么更好的方法来验证两个字符串。我担心的只是两个条目都存在于字符串中,顺序不是 imp。
最佳答案
Jackson Json parser有一个很好的功能,它可以将 Json String 解析为 Map。然后您可以查询条目或简单地询问是否相等:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.*;
public class Test
{
public static void main(String... args)
{
String input1 = "{\"state\":1,\"cmd\":1}";
String input2 = "{\"cmd\":1,\"state\":1}";
ObjectMapper om = new ObjectMapper();
try {
Map<String, Object> m1 = (Map<String, Object>)(om.readValue(input1, Map.class));
Map<String, Object> m2 = (Map<String, Object>)(om.readValue(input2, Map.class));
System.out.println(m1);
System.out.println(m2);
System.out.println(m1.equals(m2));
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出是
{state=1, cmd=1}
{cmd=1, state=1}
true
关于java - 如何在条目顺序不断变化时比较两个 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30325042/
相关文章:
python、unix、NameError : name not defined. 无法识别字符串变量
java - 如果我们无论如何都要检查等于,为什么我们要检查散列?
java - 为什么Object.equals可以比较不能用引用相等运算符(==)比较的类型?
java.io.IOException : No space left on device Android 异常
java - 尝试将一个方法从一个类引用到另一个类 = NullPointerException
java - Else 没有 if,但真的不清楚为什么,还有另一个我想看的错误
java - 在 subString 和 String 数组的元素之间进行比较时 equals() 方法返回 false