{
"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做的
使用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的写法有没有什么参考文档?