这种json用java怎么解析?

问题描述:

{"code":"11","msg":"查询成功","result":{"宁夏图书馆":"111","首都图书馆":"111","AS":"16"},"success":true}
关键是这里{"宁夏图书馆":"111","首都图书馆":"111"}这样的怎么解析?

    public static void main(String[] args) {
        String a = "{\"code\":\"11\",\"msg\":\"查询成功\",\"result\":{\"宁夏图书馆\":\"111\",\"首都图书馆\":\"111\",\"AS\":\"16\"},\"success\":true}";
        Map o = JSONObject.parseObject(a, Map.class);
        Map map1 =(Map) o.get("result");
        System.out.println(map1.toString());
        Object object = map1.get("宁夏图书馆");
        System.out.println(object);
    }

执行结果

111


data.result[i]

先把json转成map a 然后a.get("result")强转成map b b.get("宁夏图书馆")

1.
JSONObject json = JSONObject.fromObject(jsonString);

User user = new User();

user.setName(json.getString("name"));

user.setPassword(json.getString("password"));

user.setEmail(json.getString("email"));

System.out.println(user.toString());

  1. JSONArray jsonArray = JSONArray.fromObject(json);
    ArrayList users = new ArrayList();

JSONObject originJson = new JSONObject(originString);
JSONObject resultJson = originJson.getJSONObject("result");//此时的resultJson = {"宁夏图书馆":"111","首都图书馆":"111","AS":"16"}
String str1 = resultJson.getString("宁夏图书馆");//str1 = “111”
String str2 = resultJson.getString("首都图书馆");//str2 = “111”
String str3 = resultJson.getString("AS");//str3 = “16”

1.
JSONObject json = JSONObject.fromObject(jsonString);

User user = new User();

user.setName(json.getString("name"));

user.setPassword(json.getString("password"));

user.setEmail(json.getString("email"));

System.out.println(user.toString());

JSONArray jsonArray = JSONArray.fromObject(json);
ArrayList users = new ArrayList();

不是,我要是想直接get("宁夏图书馆"),我还至于提问么。我希望有个map(String,String),来一组一组的存,或者两个String数组来分别存储名字和值。在不知道任何图书馆名字的情况下,获取所有图书馆和对应值。

你可以做两次转换
先将以上转化成String,在做处理
Map resultMap= (Map)JSON.parse(要转换的字符串);
JSONArray jsonArray = JSONArray.fromObject(resultMap.get("result").toString()); //再取你要的那个result对象,这样就可以获取到你想要的信息了
Object[] strs = jsonArray.toArray(); //json转为数组 可以循环输出了

我之前也遇到过,就是这样解决的,你应该也可以


        String xx="{'code':'11','msg':'查询成功','result':{'宁夏图书馆':'111','首都图书馆':'111','AS':'16'},'success':true}";


        JSONObject a =JSONObject.fromObject(xx);
        System.out.println(a.get("code"));
        System.out.println(a.get("msg"));
        System.out.println(a.get("success"));
        JSONObject b=(JSONObject) a.get("result");
        System.out.println(b.get("宁夏图书馆"));
        System.out.println(b.get("首都图书馆"));
        System.out.println(b.get("AS"));

不知道是不是楼主想要的

@Test
public void test() throws JsonParseException, JsonMappingException, IOException{
ObjectMapper om = new ObjectMapper();
String str = "{\"code\":\"11\",\"msg\":\"查询成功\",\"result\":{\"宁夏图书馆\":\"111\",\"首都图书馆\":\"111\",\"AS\":\"16\"},\"success\":true}";
Map map =om.readValue(str, Map.class);
Map temp = (Map)map.get("result");
String string = temp.get("AS");
System.out.println(string);
String string1 = temp.get("宁夏图书馆");
System.out.println(string1);
}

pom
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.9.4</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.4</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.9.4</version>
    </dependency>

JSON 将 result 转 jsonArray 然后便利JSONArray