【发布时间】:2014-06-23 07:48:18
【问题描述】:
我有 3 个 c# 类,其中有 2 个列表,当我尝试创建一个 json 字符串时,我得到 Object reference not set to an instance of an object 错误。
我尝试过使用一个列表。它完美地工作,但我的程序中有 2 个或更多类的列表,它不起作用。请帮我解决。
模型 Json -
{
"accessKey": "7eb228097576abf56968e9845ab51b90",
"channelId": "103",
"hotels": [
{
"hotelId": "2",
"rooms": [
{
"roomId": "1"
}
]
}
]
}
C# 类 -
public class RootObject
{
public string accessKey { get; set; }
public string channelId { get; set; }
public List<Hotel> hotels { get; set; }
}
public class Hotel
{
public string hotelId { get; set; }
public List<Room> rooms { get; set; }
}
public class Room
{
public string roomId { get; set; }
}
C#
公共字符串 cc() {
string s = "";
RootObject ro = new RootObject();
ro.accessKey = "7eb228097576abf56968e9845ab51b90";
ro.channelId = "103";
ro.hotels = new List<Hotel>();
Hotel h = new Hotel();
Room r = new Room();
string config = "server=localhost;username=someuser;password=somepwd;database=db";
MySqlConnection connection = new MySqlConnection(config);
string query = "select * from test1";
MySqlCommand command = new MySqlCommand(query, connection);
connection.Open();
MySqlDataReader Reader = command.ExecuteReader();
while (Reader.Read())
{
r.roomId = Reader[2].ToString();
}
connection.Close();
query = "select * from test1";
command = new MySqlCommand(query, connection);
connection.Open();
Reader = command.ExecuteReader();
while (Reader.Read())
{
h.hotelId = Reader[1].ToString();
}
connection.Close();
h.rooms.Add(r); // Object reference not set to an instance of an object Error
ro.hotels.Add(h);
JavaScriptSerializer js = new JavaScriptSerializer();
s = js.Serialize(ro);
return s;
}
【问题讨论】:
-
你在哪一行得到错误?
-
h.rooms.Add(r);我在节目中提到过先生
-
另外,提供minimal, complete and verifiable example。 sql连接与问题完全无关。
-
好吧,你做到了,但你也提供了太多不相关的信息,以至于它没有显示在屏幕上
-
实际上,在序列化对象之前,您会遇到异常。所以这和json序列化完全没有关系,标题也没有意义。