C# 无法以字符串格式从JSON重新创建JSON值
我的目标如下:C# 无法以字符串格式从JSON重新创建JSON值,c#,json,servicestack,C#,Json,servicestack,我的目标如下: public class TestModel { public object TestValue { get; set; } } 我的数据库包含JSON格式的字符串,例如 string dbValue1 = "[\"test value\"]" string dbValue2 = "[\"one value\",[\"another value|or this value\"]]" int dbValue3 = 1 bool dbValue4 = true 我需要将这
public class TestModel
{
public object TestValue { get; set; }
}
我的数据库包含JSON格式的字符串,例如
string dbValue1 = "[\"test value\"]"
string dbValue2 = "[\"one value\",[\"another value|or this value\"]]"
int dbValue3 = 1
bool dbValue4 = true
我需要将这些值反序列化到TestModel.TestValue
属性,这样当我序列化对象时,我就可以得到存储在数据库中的相同格式。很明显,我可以得到一个int
或bool
基本数组来工作,但是对于稍微复杂一点的数组,我不能。从上面的dbValue2
中,我希望输出为:
"testValue" : ["one value",["another value|or this value"]]
现在,我正在使用ServiceStack.Text,到目前为止,我已经尝试了以下内容:
TestValue = JsonSerializer.DeserializeFromString(dbValue, typeof(object))
TestValue = dbValue.FromJson<object>()
TestValue = JsonObject.Parse(dbValue)
我能理解为什么这些不起作用,但我不知道如何做我需要的
任何帮助都将不胜感激。这是因为根元素是JSON中的一个数组。ServiceStack似乎被这个问题扼住了 如果您尝试使用ServiceStack并添加与属性具有相同数组的根对象,例如
var json = "{\"root\":[\"one value\",[\"another value|or this value\"]]}";
var testValue = JsonObject.Parse(json);
Console.WriteLine(testValue.ToJson());
它正确地序列化了数组
不过,这似乎很管用
var json = "[\"one value\",[\"another value|or this value\"]]";
var testValue = JsonConvert.DeserializeObject(
Console.WriteLine(JsonConvert.SerializeObject(testValue));
恼人的:)我已经编辑了这个问题,希望它能更清楚一些,但是是的,每个值都在不同的行中。我添加了一个解决方案(有点);-)嘿,先生,是的,我也试过了-伟大的头脑,嗯?然后问题是
testValue
包含键值对。因此,如果我随后用testValue
设置模型属性,当我的模型属性被序列化时,我会得到根对象,而不仅仅是JSON中的值。如果我尝试从键值对中提取值,那么一切都会再次出错!当执行var model=new TestModel()时,JSON.NET似乎可以工作;model.TestValue=TestValue;WriteLine(JsonConvert.SerializeObject(model))
还是我遗漏了什么?整个应用程序都基于JSON,因此我不愿意替换序列化程序,因为有一些自定义功能。这将意味着相当多的重新测试。
var json = "[\"one value\",[\"another value|or this value\"]]";
var testValue = JsonConvert.DeserializeObject(
Console.WriteLine(JsonConvert.SerializeObject(testValue));