2

我需要帮助:

我的 JSON(来自暗黑破坏神 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

您的解决方案很好,这正是我想要回复的。这样,您可以在任何地方重用 DPS,并且 JSON 解析器应将其正确反序列化为具有 DPS 最小值和最大值的适当值的“ItemInformation”。我使用相同的方法来填充对象和子对象。

您还可以使用 JSON.Net 序列化为 JSON 和反序列化 JSON 对象。

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

干杯

于 2012-08-12T01:09:01.363 回答
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 回答