Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET JsonConverter元组列表_C#_.net_Json.net - Fatal编程技术网

C# .NET JsonConverter元组列表

C# .NET JsonConverter元组列表,c#,.net,json.net,C#,.net,Json.net,我正在尝试使用一个自定义JsonConverter在序列化期间将列表转换为列表。所以,如果我在该列表上预执行JsonConvert.Serialized对象时有一个列表,我希望它序列化该列表,就像它是List类型一样。原因是元组的Item2字段已经格式化为Json,因此我想将其包装为JRaw值,以便在序列化期间不会将其作为字符串读取 JSONConverter上的文档有点稀疏。我一直在stack overflow和google上寻找类似的问题,但似乎找不到关于如何创建JSONConverter的

我正在尝试使用一个自定义JsonConverter在序列化期间将列表转换为列表。所以,如果我在该列表上预执行JsonConvert.Serialized对象时有一个列表,我希望它序列化该列表,就像它是List类型一样。原因是元组的Item2字段已经格式化为Json,因此我想将其包装为JRaw值,以便在序列化期间不会将其作为字符串读取

JSONConverter上的文档有点稀疏。我一直在stack overflow和google上寻找类似的问题,但似乎找不到关于如何创建JSONConverter的好教程。任何关于这个具体例子的帮助或者一个好教程的链接都会非常棒

对于那些好奇的人,这是我的第一次尝试:

```

```


这应该可以澄清我在编写JSONConverter时所做的一切误解。顺便说一下,我对C语言也是一种来自Java的新语言。

你能展示一下你的代码吗?如果没有,我们对你的问题和方法一无所知

另外,你们能澄清一下清单吗?因为这很可能是不可行的。你为什么需要元组?是的,它将存储一个有序列表,如果您构建一个存储所有值的对象,理论上这是多余的

此代码将实现以下功能:

客户:

这将构建我们的对象,将在下面的示例中反序列化

order.push(BuildOrder(product, quantity, price)); // Fill our Array
var convert = JSON.stringfy(order); 

$.ajax({
     url: 'location to your page',
     data: { Order: convert },
     type: 'POST',

     success: function (order) {
          // Returned object, how should it apply to your page.
     }
});
然后在服务器端代码中,您将有一个模型:

public class Order
{
     public string Product { get; set; }
     public string Quantity { get; set; }
     public string Price { get; set; }
}
现在,在正在解决的页面上,您只需执行以下操作:

JavaScriptSerializer serializer = new JavaScriptSerializer();
List<Order> deserialize = serializer.Deserialize<List<Order>>(order);
foreach(var content in deserialize)
{
     // Iterate through your client data sent to the server.
}

。。。之后,您将把对象发送回客户机以获取数据。这是前提,但没有更多的澄清,我们无法确定您想要什么。

尽管我的问题中存在一些快速性问题,我的设计选择中也存在一些问题,以防有人发现他们与我有类似的问题,我将发布我最终使用的JsonConverter:

```

```

NewtonSoft已经知道如何将列表编写为Json,我只需要序列化它


我还发现,访问这个以及这个也很有帮助。

如果我们知道您的问题,任何关于这个特定示例或链接的帮助都会很好。。到目前为止,您尝试了哪些不起作用的方法?作为错误或意外输出,您得到了什么?如果我们不能完全理解您的问题,我们将无能为力:那么您的实际问题是什么?你的代码有错误吗?意外的结果?
public class Order
{
     public string Product { get; set; }
     public string Quantity { get; set; }
     public string Price { get; set; }
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<Order> deserialize = serializer.Deserialize<List<Order>>(order);
foreach(var content in deserialize)
{
     // Iterate through your client data sent to the server.
}
public class DataJsonConverter : JsonConverter
{
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        List<Tuple<string, JRaw>> jlist = ((List<Tuple<string, string>>)value).Select(t => new Tuple<string, JRaw>(t.Item1, new JRaw(t.Item2))).ToList();
        serializer.Serialize(writer, jlist);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        JArray jarray = JArray.Load(reader);

        List<Tuple<string, string>> result = new List<Tuple<string, string>>();
        string item1;
        string item2;
        foreach (JObject j in jarray)
        {
            item1 = j.GetValue("Item1").ToString();
            item2 = j.GetValue("Item2").ToString();
            result.Add(new Tuple<string, string>(item1, item2));
        }
        return result;
    }

    public override bool CanConvert(Type objectType)
    {
        return typeof(List<Tuple<string, string>>).IsAssignableFrom(objectType);
    }
}