我可以创建JObject
var jobject = Newtonsoft.Json.Linq.JObject.Parse(jsonstring);
我想将jobject转换为只读,这样就不会添加新密钥或修改现有值。
答案 0 :(得分:1)
答案 1 :(得分:1)
不可变对象是无法更改的对象。如果您不希望JObject的消费者更改它,请给他们一份副本。 (注意:此示例使用JToken
的抽象超类JObject
来提供更通用的解决方案。)
private JToken data = JToken.Parse(@"{""Some"":""JSON""}");
public JToken Data()
{
return data.DeepClone();
}
public JToken Data(string path)
{
return data.SelectToken(path).DeepClone();
}
消费者将能够更改他们的副本,但不能更改来源。
如果data
太大而无法克隆它,请使用第二种方法JToken Data(string path)
来抓取子集。