1

私は次のクラスを持っています:

public class TestQuestionHeader
{
    public int Id { get; set; }
    public int QId { get; set; }
}

および JSON メソッド:

public static string ToJSONString(this object obj)
{
    using (var stream = new MemoryStream())
    {
        var ser = new DataContractJsonSerializer(obj.GetType());

        ser.WriteObject(stream, obj);

        return Encoding.UTF8.GetString(stream.ToArray());
    }
}

public static T FromJSONString<T>(this string obj)
{
    using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(obj)))
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        T ret = (T)ser.ReadObject(stream);
        return ret;
    }
}

私はこれらを次のように使用しています:

IList<TestQuestionHeaders> testQuestionHeaders = xxx;
string test.Questions = JSON.ToJSONString(testQuestionHeaders);
var a = JSON.FromJSONString<TestQuestionHeader>(test.Questions);

変数aTestQuestionHeader _IList<TestQuestionHeader>

4

3 に答える 3

3

メソッドFromJSONStringは type のインスタンスを返しますT。あなたの例での呼び出しは として渡しTestQuestionHeaderますT。の正しいタイプを指定するだけですT

その行を次のように変更する必要があります。

var a = JSON.FromJSONString<List<TestQuestionHeader>>(test.Questions);
于 2013-11-07T19:12:59.613 に答える
2

これTestQuestionHeaderは、ジェネリック型パラメーターとして渡すためです。以下を試してください:

IList<TestQuestionHeader> a = JSON.FromJSONString<List<TestQuestionHeader>>(test.Questions);
于 2013-11-07T19:12:14.260 に答える
1

.NET に最適な JSON ライブラリである JSON.NET を使用します。

参照: http://james.newtonking.com/json/help/index.html

于 2014-08-14T22:36:48.937 に答える