JsonConvert SerializeObject 未正确序列化字符串数组

JsonConvert SerializeObject not correctly serializing String Array

我正在使用以下 RestConnector 将一些 JSON 发布到 REST 服务器:

using Newtonsoft.Json;

public static T httpPost(String myURL, Dictionary<string, string> data) {
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myURL);
    Console.WriteLine("Sending Request to: " + myURL);

    request.Method = "POST";

    var json = JsonConvert.SerializeObject(data);


    Console.WriteLine("");
    Console.WriteLine("");
    Console.WriteLine("JSON: "+ json);
    Console.WriteLine("");
    Console.WriteLine("");

    ASCIIEncoding encoding = new ASCIIEncoding();
    byte[] byte1 = encoding.GetBytes(json);
    request.ContentType = "application/json";
    request.ContentLength = byte1.Length;

    Stream newStream = request.GetRequestStream();
    newStream.Write(byte1, 0, byte1.Length);
    newStream.Close();
    //...
}

我从服务器收到以下错误*:

Can not deserialize instance of java.lang.String[] out of VALUE_STRING

经过进一步调查,这是正在发布的原始 JSON:

{
    "tag1":"val1",
    "tag2":"System.String[]", 
    ...
}

如何序列化此对象以便正确发送数组?

示例:

{
    "tag1":"val1",
    "tag2":[],
    ...
}

编辑:

这是我创建要序列化的对象的地方:

    MyObject mo =new MyObject();
    mo.tag1= "val1";
    mo.tag2= new String[]{};

    Dictionary<string, string> input = objectToDictionary(mo);

    mo = RestConnector<MyObject>.httpPost("http://example.com", input);

objectToDictionary

 public Dictionary<string, string> objectToDictionary(object obj) {
     return obj.GetType().GetProperties()
         .ToDictionary(x => x.Name, x => x.GetValue(obj)?.ToString() ?? "");
 }

您的问题出在您的 objectToDictionary 方法中,字符串数组的 ToString 实现只是 returns "System.String[]"

你必须改变你的实现,这样 Json.Net 直接接收字符串数组,他会想出如何序列化它。