0

I am developing a web service , in which i need to return user type objects as json response. But i am unable to achieve it using this code.

public class BioMatricUsers : System.Web.Services.WebService {
    public BioMatricUsers()
    {
    }
    public class my_user
    {
        public my_user(string i, string b, string l)
        {
            id = i;
            badgeNumber = b;
            login = l;
        }

        public string id { get; set; }
        public string badgeNumber { get; set; }
        public string login { get; set; }
    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string GetUsers() 
    {
        OleDbConnection co = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\confiz\Desktop\att2000.mdb");
        co.Open();
        OleDbCommand cmd = new OleDbCommand("SELECT * FROM USERINFO", co);
        OleDbDataReader reader = cmd.ExecuteReader();
        string jsonString = "";
        int i = 1;
        MemoryStream ms = new MemoryStream();
        my_user user = null;

        Type type = user.GetType();


        while (reader.Read() && i <= 2)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(user.GetType());
            user = new my_user(reader["USERID"].ToString(), reader["badgenumber"].ToString(), reader["SSN"].ToString());
            serializer.WriteObject(ms, user);
            jsonString = Encoding.Default.GetString(ms.ToArray());
            i++;
        }
        ms.Close();
        co.Close();
        return jsonString;  
     }
}

i am getting null reference error at this line. DataContractJsonSerializer serializer = new DataContractJsonSerializer(user.GetType())

2 Answers 2

1

It's because your user is null:

my_user user = null;

try:

    while (reader.Read() && i <= 2)
    {
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(my_user));
        user = new my_user(reader["USERID"].ToString(), reader["badgenumber"].ToString(), reader["SSN"].ToString());
        serializer.WriteObject(ms, user);
        jsonString = Encoding.Default.GetString(ms.ToArray());
        i++;
    }

Object.getType() requires a non-null object instance to work on.

typeof(Class) can be used with a class.

See here: http://msdn.microsoft.com/en-us/library/58918ffs%28v=vs.71%29.aspx

While there are other libraries which have additional features, it's perfectly acceptable to use DataContractJsonSerializer if that meets your needs

Sign up to request clarification or add additional context in comments.

Comments

0

You need a library that serializes/deserializes objects to/from json. Here's a good one for .Net http://james.newtonking.com/projects/json-net.aspx

The samples on the web page will explain everything.

1 Comment

But it's not necessary, and it won't solve user1673005's null reference error.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.