Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataContractJsonSerializer不工作_C#_Json_Serialization_Datacontract_Datacontractjsonserializer - Fatal编程技术网

C# DataContractJsonSerializer不工作

C# DataContractJsonSerializer不工作,c#,json,serialization,datacontract,datacontractjsonserializer,C#,Json,Serialization,Datacontract,Datacontractjsonserializer,我使用DataContractJsonSerializer将JSON字符串转换为类,但始终返回空对象。 我在记事本中测试了带有“JSON查看器”扩展名的字符串是否有效。搜索了一个bug很长时间,并比较了其他示例 这是我的JSON字符串的缩写形式: { "error":[], "result": { "BCH": {"aclass":"currency","altname":"BCH","decimals":10,"display_decimals":5}, "DA

我使用DataContractJsonSerializer将JSON字符串转换为类,但始终返回空对象。 我在记事本中测试了带有“JSON查看器”扩展名的字符串是否有效。搜索了一个bug很长时间,并比较了其他示例

这是我的JSON字符串的缩写形式:

{
"error":[],
"result": {
        "BCH": {"aclass":"currency","altname":"BCH","decimals":10,"display_decimals":5},
        "DASH": {"aclass":"currency","altname":"test"}
    }
}
GetAssetInfoResponseAssetInfo包含具有DataMember属性的属性,但属性结果(反序列化后)不包含任何对象

[DataContract]
[KnownType(typeof(AssetInfo))]
public class GetAssetInfoResponse 
{
    [DataMember(Name = "error")]
    public List<string> Error { get; set; }

    [DataMember(Name = "result")]
    public List<Dictionary<string, AssetInfo>> Result { get; set; }
}

[DataContract]
public class AssetInfo
{
    /// <summary>
    /// Alternate name.
    /// </summary>
    [DataMember(Name = "altname")]
    public string Altname { get; set; }

    /// <summary>
    /// Asset class.
    /// </summary>
    [DataMember(Name = "aclass")]
    public string Aclass { get; set; }

    /// <summary>
    /// Scaling decimal places for record keeping.
    /// </summary>
    [DataMember(Name = "decimals")]
    public int Decimals { get; set; }

    /// <summary>
    /// Scaling decimal places for output display.
    /// </summary>
    [DataMember(Name = "display_decimals")]
    public int DisplayDecimals { get; set; }
}
我不能使用Newtonsoft.Json扩展,因为项目不应该包含任何外部依赖项。 是否有其他方法将JSON字符串传输到类中


感谢您的时间

您将
结果
声明为
列表
,但从格式上看,它看起来像一个字典,而不是一个字典列表(因为它以
{
开头,它用于对象,或字典,而不是
[
用于数组/列表)。若要将此格式用于词典,您需要配置
UseSimpleDictionaryFormat
属性

var serializer = new DataContractJsonSerializer(typeof(GetAssetInfoResponse), new DataContractJsonSerializerSettings
{
    UseSimpleDictionaryFormat = true
});
通过此设置和此更改,它起到了作用:

public Dictionary<string, AssetInfo> Result { get; set; }
公共字典结果{get;set;}
public Dictionary<string, AssetInfo> Result { get; set; }