我将数据存储在我的cassandra数据库中作为字符串,我想检索字符串并将其转换为json。我得到一个例外
类型' Newtonsoft.Json.JsonReaderException'未处理的异常发生
存储的数据有问题吗?或者我在做其他一些错事?
我的查询是:
INSERT INTO table2(key1,col1) values ('5',{'url':'{"hello":
{"hi":{"hey":"1","time":"5"}},
{"reg":{"hey":"1","time":"1"}},
{"install":{"hey":"0"}}},
"task":"1","retry":"00",
"max":"5","call":"140"'});
In my db when i click the map<text,text> column, it gets stored as :
{\"hello\":\r\n
{\"subscription_atrisk\":{\"hey\":\"1\",\"time\":\"100\"}},
{\"reg\":{\"hey\":\"1\",\"time\":\"2000\"}},
\"task\":\"0\",\"retry\":\"300\",\"max\":\"5\",\"call\":\"14400\"}
在我的c#代码中,我尝试
string s = "{\"hello\":\r\n {\"subscription_atrisk\":{\"hey\":\"1\",\"time\":\"100\"}},{\"reg\":{\"hey\":\"1\",\"time\":\"2000\"}},\"task\":\"0\",\"retry\":\"300\",\"max\":\"5\",\"call\":\"14400\"";
Jobject json = Jobject.Parse(s); //Get an Error here.
有人可以对此有所了解吗?
答案 0 :(得分:1)
您似乎错过了结束}
尝试:
string s = "{\"hello\": {\"subscription_atrisk\":{\"hey\":\"1\",\"time\":\"100\"}}, \"missing_key\": {\"reg\":{\"hey\":\"1\",\"time\":\"2000\"}},\"task\":\"0\",\"retry\":\"300\",\"max\":\"5\",\"call\":\"14400\"}";
答案 1 :(得分:1)
在JSON中,对象应包含键和值或其他对象/数组。 您的JSON对象中存在语法错误。首先,始终使用双引号。
然后...... url
对象有一个键Hello
,但是在那里你应该再放两个键,你只需要再放两个对象,好像它是一个数组
这可能是正确的语法:
{
"url": {
"hello": {
"hi": {
"hey": "1",
"time": "5"
}
},
"MissingKey1":{
"reg": {
"hey": "1",
"time": "1"
}
},
"MissingKey2":{
"install": {
"hey": "0"
}
}
},
"task": "1",
"retry": "00",
"max": "5",
"call": "140"
}
或者,如果您真的打算在hello
内有一个url
对象和另外两个对象的数组:
{
"url": {
"hello": {
"hi": {
"hey": "1",
"time": "5"
}
},
"AnArray": [{
"reg": {
"hey": "1",
"time": "1"
}
}, {
"install": {
"hey": "0"
}
}]
},
"task": "1",
"retry": "00",
"max": "5",
"call": "140"
}
我建议在将这些JSON对象存储到数据库之前,总是验证它们以确保它们的语法有效。
甚至更好:这个Newtonsoft库提供了从其他对象序列化(创建)JSON字符串的函数。见JsonConvert.SerializeObject Method
一般来说,查看API文档是个好主意,它可以为您节省大量时间,这样您就不必进行不必要的工作。