Почему я получаю побег цитаты?Json.net - PullRequest
0 голосов
/ 02 октября 2018

Я не уверен, правильно ли я это делаю.Я храню json в своей базе данных, которую хочу обновить.

var items = dbContext.items.FromSql("select *, JSON_VALUE(Attributes, '$.serialNumber') as serialNumber FROM Items WHERE JSON_VALUE(Attributes,'$.serialNumber') like '%15830792087%'").ToList();
var attributes = JObject.Parse(items[0].Attributes);
var images = attributes["image"];
if(images == null){
    var newImage = new List<InventoryImage>()
    {
        new InventoryImage()
        {
             ImageUrl = imageBlob.Uri.AbsoluteUri,
             OrignalName = file.FileName,
             ThumbnailUrl = thumbnailBlob.Uri.AbsoluteUri
        }
    };
    JProperty newProp = new JProperty("image", JsonConvert.SerializeObject(newImage));
    attributes.Add(newProp);
    images[0].Attributes = JsonConvert.SerializeObject(attributes);
    dbContext.SaveChanges();
}

что я получаю в своей базе данных.

"image":"[{\"OrignalName\":\"cat-pet-animal-domestic-104827.jpeg\",\"ImageUrl\":\"ed1ab040e710.jpeg\",\"ThumbnailUrl\":\"3c3e73e3-5062-492b-b830-ed1ab040e710_thumbnail.jpeg\"}]"}

1 Ответ

0 голосов
/ 02 октября 2018
JProperty newProp = new JProperty("image", JsonConvert.SerializeObject(newImage));

Это сериализует newImage в строку JSON, а затем присваивает эту строку JSON в качестве значения свойству image.Таким образом, значение property является строкой, которая является строкой JSON.

Вместо этого вам следует назначить значение напрямую, без его сериализации.Таким образом вы избежите двойной сериализации:

Property newProp = new JProperty("image", JToken.FromObject(newImage));
...