尝试解析JSON文件,由于其保护级别,我无法访问错误“ JsonPropertyAttribute”。 应该修改什么以消除此错误?
我尝试为JsonProperty添加一个公共构造函数,但这导致了另一个错误,即JsonProperty不是属性类。
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace NordstromRack
{
public partial class ReadJson
{
[JsonProperty("items")]
public Item[] Items { get; set; }
}
public partial class Item
{
[JsonProperty("url")]
public Uri Url { get; set; }
[JsonProperty("item_xpath", NullValueHandling = NullValueHandling.Ignore)]
public string ItemXpath { get; set; }
[JsonProperty("item_size")]
public string ItemSize { get; set; }
}
public partial class ReadJson
{
public static ReadJson FromJson(string json) => JsonConvert.DeserializeObject<ReadJson>(json, QuickType.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this ReadJson self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
}
internal static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
Converters =
{
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
},
};
}
}
以下是JSON文件
{
"items": [{
"url": "https://www.nordstromrack.com/shop/Women/Clothing/Activewear/Jackets%20&%20Hoodies",
"item_xpath": "//*[@href='/shop/product/2299794/nike-vintage-drawstring-hoodie?color=BLACK%2FSAIL']",
"item_size": "//*[@href='?color=TRUBER%2FSAIL&size=L']"
},
{
"url": "https://www.nordstromrack.com/shop/product/2843153/blu-pepper-leopard-tie-sleeve-dress?color=LAVENDER",
"item_size": "//*[@href='?color=LAVENDER&size=L']"
},
{
"url": "https://www.nordstromrack.com/events/281375/products/2584102/j-crew-cotton-cardigan?color=BLACK",
"item_xpath": "//*[@href='/events/281375/products/2584102/j-crew-cotton-cardigan?color=BLACK']",
"item_size": "//*[@href='?color=BLACK&size=M']"
}
]
}
答案 0 :(得分:1)
由于其保护级别而无法访问。[...]我尝试为JsonProperty添加一个公共构造函数,但它导致了另一个错误,即JsonProperty不是属性类。
您似乎出于某种原因创建了自己的JsonPropertyAttribute
类。无法访问,因为它没有可访问性修饰符,因此不公开。
在粘贴一些生成的代码时,您可能多次按下 Ctrl + 。或 Alt + Enter ,导致Visual Studio或ReSharper为您生成此类。
只需从您的项目中删除该类。正确的lives in the Newtonsoft.Json
namespace already。
答案 1 :(得分:0)
有效的方法是通过NuGet软件包安装Newtonsoft.json。显然,即使未安装,也可以将其作为软件包导入,但需要安装。 希望这对遇到与我一样的错误的人有所帮助!