2

これについて助けが必要です:

私のJSON(Diablo 3 APIからのものです):

{
   "name":"Exsanguinating Chopsword of Assault",
   "icon":"mightyweapon1h_202",
   "displayColor":"blue",
   "tooltipParams":"item-data/COGHsoAIEgcIBBXIGEoRHYQRdRUdnWyzFB2qXu51MA04kwNAAFAKYJMD",
   "requiredLevel":60,
   "itemLevel":61,
   "bonusAffixes":0,
   "dps":{
       "min":206.69999241828918,
       "max":206.69999241828918
    }
}

完全なJSONではありませんが、勉強中なのでこの部分だけ解析してみます。

文字列の名前、アイコン、表示色を取得する方法は知っていますが、DPS を取得する方法はわかりません。

私のモデルクラスは次のとおりです。

namespace Diablo_III_Profile
{
[DataContract]
public class ItemInformation : INotifyPropertyChanged
{
    private string _name;

    [DataMember]
    public string name
    {
        get
        {
            return _name;
        }
        set
        {
            if (value != _name)
            {
                _name = value;
                NotifyPropertyChanged("name");
            }
        }
    }
    //others strings and ints here

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (null != handler)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

モデルクラスに入れるDPSの「フォーマット」は何ですか?

私がこれを使用している文字列を読み取るには:

 MemoryStream ms = new MemoryStream();
 ItemInformation data = (ItemInformation)Deserialize(ms, typeof(ItemInformation));
 MessageBox.Show(data.name);

DPSも同じはず?

編集:

やったよ!それが最善の方法かどうかはわかりませんが....

私が入れたモデルクラスの中に

public class DPS
    {
        public float min { get; set; }
        public float max { get; set; }
    }

    private DPS _dps;

    [DataMember]
    public DPS dps
    {
        get
        {
            return _dps;
        }
        set
        {
            if (value != _dps)
            {
                _dps = value;
                NotifyPropertyChanged("dps");
            }
        }
    }
4

2 に答える 2

0

やったよ!それが最善の方法かどうかはわかりませんが....

私が入れたモデルクラスの中に

public class DPS  
 {  
     public float min { get; set; }  
     public float max { get; set; }  
 }  

private DPS _dps;  

[DataMember]  
public DPS dps  
{  
    get  
    {  
        return _dps;  
    }  
    set  
    {  
        if (value != _dps)  
        {  
            _dps = value;  
            NotifyPropertyChanged("dps");  
        }  
    }  
}  
于 2012-08-13T16:41:16.960 に答える
0

あなたの解決策は良いです、それはまさに私が返信しようとしていたものです. このようにして、必要な場所でDPSを再利用でき、JSONパーサーはDPSの最小値と最大値の適切な値を使用して「ItemInformation」に適切に逆シリアル化する必要があります。同じ方法を使用して、オブジェクトと子オブジェクトを設定しました。

JSON.Net を使用して、JSON へのシリアライズと JSON オブジェクトのデシリアライズを行うこともできます。

http://james.newtonking.com/projects/json/help/index.html

乾杯

于 2012-08-12T01:09:01.363 に答える