首页 > 解决方案 > 如何使用 C# 将字符串合并到 JSON

问题描述

你好我想发布到 api 但不幸的是有问题合并,插入或添加字符串到它..请帮助

合并尝试 1:失败的 api 甚至无法读取 1。

[{"Key":"RatingName","Value":"testing from web"},{"Key":"RatingCode","Value":"1234"},{"Key":"RatingDesc","Value":"1234"},{"Key":"Levels","Value":"[{\"SortOrder\":\"1\",\"LvlName\":\"1\",\"LvlScore\":\"1\",\"LvlDesc\":\"1\"},{\"SortOrder\":\"12\",\"LvlName\":\"12\",\"LvlScore\":\"12\",\"LvlDesc\":\"12\"}]"}]

合并尝试 2 api 可以读取数据但不能读取级别值:(我只是将字符串插入 KeyValuePair 并将级别值作为字符串)并在发布到 API 之前使用 FormUrlEncodedContent

RatingName=testing+from+web&RatingCode=1234&RatingDesc=1234&Levels=%5B%7B%22SortOrder%22%3A%221%22%2C%22LvlName%22%3A%221%22%2C%22LvlScore%22%3A%221%22%2C%22LvlDesc%22%3A%221%22%7D%2C%7B%22SortOrder%22%3A%2212%22%2C%22LvlName%22%3A%2212%22%2C%22LvlScore%22%3A%2212%22%2C%22LvlDesc%22%3A%2212%22%7D%5D

当前的 JSON:

 {
 "RatingName":"testing from web",
 "RatingCode":"1234",
 "RatingDesc":"1234",
 "Levels": "" 
 }

如何使用字符串插入级别:(下面是字符串而不是数组)

string =  [{"SortOrder":"1",
             "LvlName":"1",
             "LvlScore":"1",
             "LvlDesc":"1"},
           {"SortOrder":"12",
             "LvlName":"12",
             "LvlScore":"12",
             "LvlDesc":"12"}]

我的期望是:

{
     "RatingName":"testing from web",
     "RatingCode":"1234",
     "RatingDesc":"1234"
     "Levels": [{
                 "SortOrder":"1",
                 "LvlName":"1",
                 "LvlScore":"1",
                 "LvlDesc":"1"
                 },
                {
                 "SortOrder":"12",
                 "LvlName":"12",
                 "LvlScore":"12",
                 "LvlDesc":"12"
                 }] 
   }

标签: c#json

解决方案


尝试使用 Newtonsoft.Json。这是一个代码示例:

using System;
using Newtonsoft.Json.Linq;
                    
public class Program
{
    public static void Main()
    {
        JToken o1 = JToken.Parse("{\"RatingName\":\"testing from web\",\"RatingCode\":\"1234\",\"RatingDesc\":\"1234\",\"Levels\": \"\" }");
        JToken o2 = JToken.Parse("[{\"SortOrder\":\"1\", \"LvlName\":\"1\", \"LvlScore\":\"1\", \"LvlDesc\":\"1\"}, {\"SortOrder\":\"12\", \"LvlName\":\"12\", \"LvlScore\":\"12\", \"LvlDesc\":\"12\"}]");
        
        o1["Levels"] = o2;
        
        Console.WriteLine(o1.ToString());
    }
}

推荐阅读