[英]How to get data from JSON string?
我有一个像这样的JSON字符串:
{
"response":[2,
{
"id":"187",
"name":"John",
"surname":"Corner"
},
{
"id":"254",
"name":"Bob",
"surname":"Marley"
}
]
}
如何使用Java中的GSON lib解析它? 我试过了:
static class SearchRequest {
private Names[] response;
static class Names {
private int id;
private String name;
private String surname;
}
}
但它不起作用:(
response
数组不仅包含Names
,而且还包含一个整数值: response[0]=2
。 所以你必须使用类似
private Object[] response;
新增:我认为,您无需更改JSON,因为您的response
是私有的,因此您应该使用getter:
static class SearchRequest {
private Object[] response;
static class Names {
private int id;
private String name;
private String surname;
}
public List<Names> getNames() {
List list = new ArrayList();
list.addAll(Arrays.asList(response));
return (List<Names>) list.subList(1, response.length);
}
public int getAmount() {
return (Integer) response[0];
}
public void setNames(List<Names> names) {
response = new Object[names.size() + 1];
response[0] = names.size();
for (int i = 0, namesSize = names.size(); i < namesSize; i++) {
response[i + 1] = names.get(i);
}
}
}
我准备了一个示例代码来测试您的情况,将gson-2.1.jar
用作库并正确运行。 我通过从响应数组的开头删除"2,"
来修改了JSON字符串,因为它引起了异常。 看一下并测试以下代码:
import com.google.gson.Gson;
public class Test
{
static class SearchRequest
{
private Names [] response;
static class Names
{
private int id;
private String name;
private String surname;
}
}
public static void main ( String [] args )
{
Gson gson = new Gson();
String str = "{ \"response\":"
+ "[{\"id\":\"187\",\"name\":\"John\",\"surname\":\"Corner\"},"
+ "{\"id\":\"254\",\"name\":\"Bob\",\"surname\":\"Marley\"}]}";
SearchRequest request = new SearchRequest();
request = gson.fromJson( str, SearchRequest.class );
System.out.println( "name of 1st: " + request.response [ 0 ].name );
System.out.println( "surname of 2nd: " + request.response [ 1 ].surname );
}
}
输出:
name of 1st: John
surname of 2nd: Marley
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.