Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否将不带根元素的Json转换为对象?使用Gson、Ksoap2、Json.NET_Android_Json_Serialization_Gson_Ksoap2 - Fatal编程技术网

Android 是否将不带根元素的Json转换为对象?使用Gson、Ksoap2、Json.NET

Android 是否将不带根元素的Json转换为对象?使用Gson、Ksoap2、Json.NET,android,json,serialization,gson,ksoap2,Android,Json,Serialization,Gson,Ksoap2,在我的android应用程序中,我从我的web服务得到以下响应: [ { "bookNum":1, "title":"Halo the fall", "author":"Erick Nylum" }, { "bookNum":2, "title":"Halo contact", "author":"Erick Nylum" } ] 在android中,我试图使用这个json在数组或列表对象中进行转换,因为我没有根元素 btnConsumer=(按钮)this.findViewByI

在我的android应用程序中,我从我的web服务得到以下响应:

[
{
 "bookNum":1,
 "title":"Halo the fall",
 "author":"Erick Nylum"
},
{
 "bookNum":2,
 "title":"Halo contact",
 "author":"Erick Nylum"
}
]
在android中,我试图使用这个json在数组或列表对象中进行转换,因为我没有根元素

btnConsumer=(按钮)this.findViewById(R.id.button1);
btnConsumer.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
SoapObject请求=新的SoapObject(WSDL\u目标\u命名空间、操作\u名称);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(请求);
envelope.dotNet=true;
HttpTransportSE httpTransport=新的HttpTransportSE(SOAP_地址);//因为AndroidHttpTransport现在是d
试一试{
httpTransport.debug=true;/?
调用(SOAP_操作,信封);
对象响应=(对象)信封.getResponse();
lblView.setText(response.toString());
字符串jsonData=response.toString();
JSONObject json=新的JSONObject(jsonData);
JSONObject data=json.getJSONObject(“book”);//无根错误
}捕获(JSONException e){
//TODO:处理异常
e、 printStackTrace();
}捕获(例外e){
//TODO:处理异常
lblView.setText(例如toString());
//lblView.setText(e.getMessage());
}           
}
});
jsonData是我的JSON字符串,我不知道如何转换成这个对象

公共类书籍{
@SerializedName(“bookNum”)
私有字符串BookNum;
@序列化名称(“标题”)
私有字符串标题;
@序列化名称(“作者”)
私有字符串作者;
公共书籍(){
//电容器真空
}
公共图书(字符串bookNum、字符串标题、字符串作者){
超级();
这个.setBookNum(bookNum);
这个.setTitle(title);
这个.setAuthor(author);
}
公共字符串getBookNum(){
返回BookNum;
}
公共字符串getTitle(){
返回标题;
}
公共字符串getAuthor(){
返回作者;
}
公共void setBookNum(字符串bookNum){
BookNum=BookNum;
}
公共无效集合标题(字符串标题){
头衔=头衔;
}
公共void setAuthor(字符串编写器){
作者=作者;
}
}
我的web服务

[WebMethod(Description=“尝试使用Newtonsoft返回Json格式的图书对象列表”)]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
公共字符串ShowAllBooks()
{
string url=“Server=localhost;database=books;password=system;user=sa;”;
MySqlConnection conn=新的MySqlConnection(url);
conn.Open();
MySqlCommand=conn.CreateCommand();
//挑选
command.CommandText=(“从读取中选择*);
command.Connection=conn;
MySqlDataReader=command.ExecuteReader();
List listaBooks=新列表();
while(reader.Read())
{
书=新书();
book.bookNum=Convert.ToInt16(reader.GetString(0));
book.title=reader.GetString(1.ToString();
book.author=reader.GetString(2.ToString();
添加(书本);
}
command.Connection.Close();
//var settings=new JsonSerializerSettings();
//settings.typenameholling=typenameholling.Objects;
//var typebook=Type.GetType(“WS_Basico.Book”);
//字符串json=JsonConvert.SerializeObject(listaBooks,Formatting.Indented,settings);
字符串json=JsonConvert.SerializedObject(listaBooks,Formatting.Indented);
返回json;
}  
但是我不能,我看到的所有方法(很多)都使用一个“根元素”,通常是对象名,在我的例子中我没有。 怎么了?
我遵循这一点,但他在JSON(对象名)中有一个根元素

有人请给我教程或链接或示例代码


非常感谢@Paresh。。你让我开心。。在你的帮助下,我还是继续前进。。实际上,我创建了一个方法,该方法接收jsonData并将数据放在listView中,如下所示。。。这条路对吗

protectedvoid ShowInView(字符串jsonData){
//TODO自动生成的方法存根
JSONArray arrayResponse;
试一试{
arrayResponse=新的JSONArray(jsonData);
for(int i=0;i

谢谢大家!

问题在这里:

JSONObject json= new JSONObject(jsonData);
JSONObject data= json.getJSONObject("book");//no root ERROR
解决方案: 问题是您在响应中获得了
JSONArray
,但您正在使用响应字符串创建JSONObject

JSONArray arrayResponse = new JSONArray(jsonData);  // correct way
现在,要获得子JSON对象,必须迭代JSONArray

for(int i=0; i<arrayResponse.length(); i++)
{
   JSONObject subObj = arrrayResponse.getJSONObject(i);
    // Now you can fetch strings/int and other values from object.
}

对于(int i=0;iHi,请检查此链接以了解如何使用gson for array:@mohitharma它非常有用..现在我正在完成我的应用程序。gson如何..使用gson时,我们如何序列化没有根元素的数据retrofit@GeorgeThomas我没听清你的问题!我想这是一个不同于提问的问题,我们能解析相同的回答吗