1

顧客で新しいパッケージをインポートすることは許可されていません。JSON 文字列のように見えるオブジェクトの取得Stringと戻りの間の領域でのみ許可されていList<String>ます。

私はひどく限界を感じており、私が見る限り、先に進むことができません. 私の最善の策はRegexオブジェクトを使用することですが、おそらくもっとスムーズな解決策がありますか? (私は XDocument も使用することが許可されていると信じています。それが役立つ場合は LINQ も使用できます)。

提案?

4

1 に答える 1

1

このマニュアルに従えば、それができるはずです。

System.Runtime.Serialization.dll (標準の .net dll) をインポートするだけです。

編集:

あなたはこの方法を持っています

public static T JsonDeserialize<T> (string jsonString)

取得するjsonがわかっている場合は、次のようなオブジェクトを作成できます。

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

したがって、次のように使用できます。

string jsonString = "{\"Age\":28,\"Name\":\"Tom\"}";
Person p = JsonHelper.JsonDeserialize<person>(jsonString);

編集2:

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

    static void Main(string[] args)
    {
        string json = "[{\"Age\":28,\"Name\":\"Tom\"},{\"Age\":18,\"Name\":\"Andes\"},{\"Age\":32,\"Name\":\"Lily\"}]";
        List<Person> persons = new List<Person>(JsonHelper.JsonDeserialize<Person[]>(json));

    }

編集 3: JsonHelper は、デフォルトのセットアップを実装するクラスです。

/// <summary>
/// JSON Serialization and Deserialization Assistant Class
/// </summary>
public class JsonHelper
{
    /// <summary>
    /// JSON Serialization
    /// </summary>
    public static string JsonSerializer<T>(T t)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream ms = new MemoryStream();
        ser.WriteObject(ms, t);
        string jsonString = Encoding.UTF8.GetString(ms.ToArray());
        ms.Close();
        return jsonString;
    }
    /// <summary>
    /// JSON Deserialization
    /// </summary>
    public static T JsonDeserialize<T>(string jsonString)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
        T obj = (T)ser.ReadObject(ms);
        return obj;
    }
}
于 2013-02-08T15:22:42.883 に答える