如何直接解析json数据


{
    "errno": "0",
    "logid": "14815156840", 
    "words_result": {
            "ADDR": ["中国·北京东城区朝阳门北大街4848号"],
            "FAX": ["010-818480043"],
            "MOBILE": ["18284584483"],
            "NAME": ["陈圆圆"],
            "PC": ["100010"],
            "URL": ["www.baidu.comwww.baidu.com"],
            "TEL": ["010-89184841"],
            "COMPANY": ["宝力机械有限公司"],
            "TITLE": ["总经理"]
    } 
}

这串json数据,网络请求的返回结果string s;s就是这串json数据
怎么能直接读到name的数值?再以文字的形式展示出来。
我看网上的教程都是数组里的结果,我这个结果就是数组,应该怎么读取再文本的形式显示出来呢?

1楼的答案是ok的,你只能get到第一个大括号是因为你只建立了一个类吧。
json一层大括号就是一个类。你这个两层大括号就得是两个类,我这个是用fastJson做的

img

img

img

使用jackson解析json的代码如下:

public class Answer7708989 {

    public static void main(String[] args) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();
        String json = "{\n" +
                "    \"errno\": \"0\",\n" +
                "    \"logid\": \"14815156840\", \n" +
                "    \"words_result\": {\n" +
                "            \"ADDR\": [\"中国·北京东城区朝阳门北大街4848号\"],\n" +
                "            \"FAX\": [\"010-818480043\"],\n" +
                "            \"MOBILE\": [\"18284584483\"],\n" +
                "            \"NAME\": [\"陈圆圆\"],\n" +
                "            \"PC\": [\"100010\"],\n" +
                "            \"URL\": [\"www.baidu.comwww.baidu.com\"],\n" +
                "            \"TEL\": [\"010-89184841\"],\n" +
                "            \"COMPANY\": [\"宝力机械有限公司\"],\n" +
                "            \"TITLE\": [\"总经理\"]\n" +
                "    } \n" +
                "}";
        Word word = objectMapper.readValue(json, Word.class);
        String name = word.getWordsResult().getName().get(0);
        System.out.println("name=" + name);
    }
}

@Data
class Word {
    private String errno;
    private String logid;
    @JsonProperty("words_result")
    private Address wordsResult;
}

@Data
class Address {
    @JsonProperty("ADDR")
    private List<String> add;
    @JsonProperty("FAX")
    private List<String> fax;
    @JsonProperty("MOBILE")
    private List<String> mobile;
    @JsonProperty("NAME")
    private List<String> name;
    @JsonProperty("PC")
    private List<String> pc;
    @JsonProperty("URL")
    private List<String> url;
    @JsonProperty("TEL")
    private List<String> tel;
    @JsonProperty("COMPANY")
    private List<String> company;
    @JsonProperty("TITLE")
    private List<String> title;
}

运行结果如下

name=陈圆圆

纯手工代码一行一行编写,很用心的回答,
如有帮助,请采纳,十分感谢!

  • 从文件读取
import org.apache.commons.io.FileUtils;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;

public class Demo {
    public static void main(String args[]) throws IOException {

        File file=new File("test.json");
        String content= FileUtils.readFileToString(file,"UTF-8");
        JSONObject jsonObject=new JSONObject(content);
        System.out.println("姓名是:"+jsonObject.getJSONObject("words_result").getJSONArray("Name"));

    }
}
// 使用ali的fastjson :https://www.w3cschool.cn/fastjson/fastjson-quickstart.html
jsonStr = "这里是json字符串"
JSONObject jsonObj = JSON.parseObject(jsonStr); 
String name = jsonObj.getJSONObject("words_result").getString("name");

如果是用java,那么可以用gson、objectmapper、fastjson等组件去解析,如果是js那么直接作为object的属性去取值就可以了

如果是是用jackon,那么readvalue(json,list类)中list的写法有没有什么参考文档?