这是JSON字符串:
{"name":"Chris","home":[],"children":[{"name":"Belle"},{"name":"O"}]}
我通常会这样创建自定义对象:
public class Child
{
public string name { get; set; }
}
public class RootObject
{
[DataMember]
public string name { get; set; }
[DataMember]
public List<object> home { get; set; }
[DataMember]
public List<Child> children { get; set; }
}
但是现在我不希望 child 成为List,
我只想将子级记录/序列化为String,而不是Child。这意味着我只是不介意保留此部分:[{“name”:“Belle”},{“name”:“O”}]作为STRING,而不是数组/列表。
我怎样才能做到这一点?我正在使用DataContractJSONSeriliazer.ReadObject方法。
最佳答案
由于您不介意使用其他库,因此我建议使用NewtonSoft JSON.NET。那里有一些类(JObject
,JArray
等),它们可以将任意JSON数据表示为某些强类型对象的一部分。我使用它是为了反序列化一些大的JSON,而其中只有一小部分对我来说很有趣。我可以反序列化整个JSON,修改重要的部分并重新序列化,使不相关的部分保持不变。
这是将children
作为字符串获取的代码示例,即使它是JSON中的数组也是如此。重要的是您可以修改其他字段(name
和home
)的内容并序列化整个内容,并且JSON输出中的children
将保留原始内容的数组。
假设
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
这是代码示例:
public class RootObject
{
public string name;
public List<object> home;
public JArray children; // I don't care what children may contain
}
class Program
{
static void Main(string[] args)
{
string sourceJSON =
@"{""name"":""Chris"",""home"":[],""children"":[{""name"":""Belle""},{""name"":""O""}]}";
RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(sourceJSON);
string partAsString = rootObject.children.ToString(Formatting.None);
// partAsString is now: [{"name":"Belle"},{"name":"O"}]
}
}
关于c# - 如何将JSON值保留为String?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31391674/