0

Jsonの解析にDataContractJsonSerializerを使用しています。このjsonを解析する方法を教えてください:

{"response":[2,{"mid":95001,"date":1360173495,"out":0,"uid":32578013,"read_state":0,"title":"Head","body":"message"}, {"mid":95000,"date":1360173439,"out":0,"uid":32506752,"read_state":0,"title":" Theme ","body":"message2"}]}

どのような構造が必要なのか理解できません。私はこれを書こうとしています:

[DataContract]
internal class Message
{
    [DataMember]
    public int IntMember { get; set; } 

    [DataMember]
    public List<Messages> response { get; set; }        

    [DataContract]
    protected internal struct Messages
    {
        [DataMember]
        public string mid { get; set; }            
        [DataMember]
        public string uid { get; set; }            
        [DataMember]
        public string date { get; set; }           
        [DataMember]
        public string title { get; set; }     
        [DataMember]
        public string body { get; set; }       
    }
}

しかし、これは最初に 2 があるため機能しません。何をすべきか?解析する前にこの番号を削除しますか、それとも明らかに無視できますか?

4

2 に答える 2

1

残念ながら、組み込みのシリアライザーを使用して必要なものを取得できるようには見えません。配列は、配列の長さを示す最初の要素として整数を含んでいるように見えます。これは標準のJSONではなく、(明らかに発見したように)配列に異種要素のリストが含まれていることを意味します。

JSON.netのようなより専用のJSONライブラリを使用すると運が良くなる可能性があります

于 2013-02-07T21:36:24.987 に答える
0

問題が解決しました。正規表現を使用して「不要な番号」を見つけて削除する

番号自体が必要な場合:

@"(?<=response\D*)\d+"

カンマ付きの数字が必要な場合:

@"(?<=response\D*)\d[^{]*"

そして交換

Replace(jsonString, RegEx);

インターネット、本 C # 5.0、およびフォーラム Cyber​​Forum に感謝します

于 2013-02-08T18:13:57.977 に答える