无法从字符串格式的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属性,以便在序列化对象时获得与存储在数据库中的格式相同的格式。很明显,我可以让intbool在一个基本的数组中工作,但我不能在一个稍微复杂的数组中工作。从上面的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中重新创建JSON值

这是因为根元素在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));

烦人:)