无法从字符串格式的JSON中重新创建JSON值
本文关键字:JSON 新创建 创建 字符串 格式 | 更新日期: 2023-09-27 18:14:57
我有以下对象:
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。文本,到目前为止,这是我尝试过的:
TestValue = JsonSerializer.DeserializeFromString(dbValue, typeof(object))
TestValue = dbValue.FromJson<object>()
TestValue = JsonObject.Parse(dbValue)
生成:
"testValue":"[one value,[another value|or this value]]"
"testValue":{"one value":["another value|or this value"]}
"testValue":{"one value":["another value|or this value"]}
我能理解为什么这些不工作,但我不知道如何做我需要的。
这是因为根元素在JSON中是一个数组。ServiceStack似乎在这上面卡住了。
如果你尝试在ServiceStack中添加一个与属性相同数组的根对象,例如
var json = "{'"root'":['"one value'",['"another value|or this value'"]]}";
var testValue = JsonObject.Parse(json);
Console.WriteLine(testValue.ToJson());
正确序列化数组。
Json。Net似乎只是工作。
var json = "['"one value'",['"another value|or this value'"]]";
var testValue = JsonConvert.DeserializeObject(
Console.WriteLine(JsonConvert.SerializeObject(testValue));
烦人:)