Newtonsoft.Json解析值时遇到意外字符:リ

时间:2019-02-14 16:09:20

标签: c#

我需要反序列化此JSON数据:

{
    illustId: 73024242,
    illustTitle: 标题,
    illustType: 0,
    tags: [
        ロリ,
        猫耳
    ],
    userId: 123,
    userName: 庭,
    userImage: null,
    isBookmarkable: true,
    isBookmarked: false,
    isPrivateBookmark: false,
    width: 1024,
    height: 1536,
    pageCount: 3,
    bookmarkCount: 0,
    responseCount: 0
}

这是我的班级定义:

[JsonObject]
public class JsonItem
{
    [JsonProperty("illustId")]
    public int PicID { get; set; }

    [JsonProperty("illustTitle")]
    public string TitleName { get; set; }

    [JsonProperty("illustType")]
    private int Type { get; set; }

    [JsonProperty("url")]
    public string PicURL { get; set; }

    [JsonProperty("tags")]
    public object Tags { get; set; }

    [JsonProperty("userId")]
    public int UserID { get; set; }

    [JsonProperty("userName")]
    public string UserName { get; set; }

    [JsonProperty("userImage")]
    private object userImage { get; set; }

    [JsonProperty("isBookmarkable")]
    private bool orzA { get; set; }

    [JsonProperty("isBookmarked")]
    private bool orzB { get; set; }

    [JsonProperty("isPrivateBookmark")]
    private bool orzC { get; set; }

    [JsonProperty("width")]
    public int Weight { get; set; }

    [JsonProperty("height")]
    public int Height { get; set; }

    [JsonProperty("pageCount")]
    public int Count { get; set; }

    [JsonProperty("bookmarkCount")]
    private int orzD { get; set; }

    [JsonProperty("responseCount")]
    private int orzE { get; set; }
}

我正在运行以下代码:

dynamic jsonText = JsonConvert.DeserializeObject(str);

但是它不起作用。我也尝试过使用UTF-8字符集。

这是StackTrace    在Newtonsoft.Json.JsonTextReader.ParseValue()    在Newtonsoft.Json.JsonTextReader.Read()    在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateJObject(JsonReader reader)    在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader阅读器,类型objectType,JsonContract合同,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerMember,对象existingValue)    在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader,Type objectType,JsonContract合同,JsonProperty成员,JsonContainerContract containerContract,JsonProperty containerMember,对象existValue)    在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType,Boolean checkAdditionalContent)    在Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,Type objectType)    在Newtonsoft.Json.JsonConvert.DeserializeObject(字符串值,类型,JsonSerializerSettings设置)    在Newtonsoft.Json.JsonConvert.DeserializeObject(字符串值)    在Test.Program.Main()位置H:\爬虫\ Test \ Test \ Program.cs:行号34

1 个答案:

答案 0 :(得分:0)

解决该错误的方法是@Sami Kuhmonen的注释,将字符串用引号引起来。
请让我添加此信息。


此代码不使用JsonItem类。

dynamic jsonText = JsonConvert.DeserializeObject(str);

要将Json反序列化为JsonItem,请使用以下类型参数:

JsonItem jsonText = JsonConvert.DeserializeObject<JsonItem>(str);