0

私はWebサービスを開発しています。このサービスでは、ユーザータイプのオブジェクトをjson応答として返す必要があります。しかし、私はこのコードを使用してそれを達成することはできません。

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;  
     }
}

この行でnull参照エラーが発生しています。DataContractJsonSerializerシリアライザー=新しいDataContractJsonSerializer(user.GetType())

4

2 に答える 2

1

これは、ユーザーnullであるためです。

my_user user = null;

試す:

    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()作業するには、null以外のオブジェクトインスタンスが必要です。

typeof(Class)クラスで使用できます。

ここを参照してください:http://msdn.microsoft.com/en-us/library/58918ffs%28v=vs.71%29.aspx

DataContractJsonSerializer追加機能を備えた他のライブラリもありますが、それがニーズを満たす場合は、使用してもまったく問題ありません。

于 2012-10-01T11:31:34.020 に答える
0

オブジェクトをjsonとの間でシリアル化/逆シリアル化するライブラリが必要です。これが.Nethttp ://james.newtonking.com/projects/json-net.aspxに適したものです

Webページのサンプルですべてを説明します。

于 2012-10-01T11:24:01.590 に答える