相关疑难解决方法(0)

如何在ASP.NET中将JSON反序列化为简单的Dictionary <string,string>?

我在JSON中有一个简单的键/值列表,通过POST发送回ASP.NET.例:

{ "key1": "value1", "key2": "value2"}
Run Code Online (Sandbox Code Playgroud)

我并没有想要进入强大的.NET对象

我只需要一个普通的旧的Dictionary(Of String,String),或者一些等价的(hash table,Dictionary(Of String,Object),old-school StringDictionary - hell,一个2-D字符串数组对我有用.

我可以使用ASP.NET 3.5中的任何可用内容,以及流行的Json.NET(我已经将其用于序列化客户端).

显然,这些JSON库都没有开箱即用的明显功能 - 它们完全专注于通过强大的合同进行基于反射的反序列化.

有任何想法吗?

限制:

  1. 我不想实现自己的JSON解析器
  2. 无法使用ASP.NET 4.0
  3. 宁愿远离旧的,已弃用的JSON ASP.NET类

json asp.net-ajax asp.net-3.5 json.net

642
推荐指数
12
解决办法
58万
查看次数

Json.NET:将嵌套数组反序列化为强类型对象

我正在编写客户端应用程序,它应该处理服务器响应.回复是JSON.我决定使用Json.NET来反序列化它们.我无法简化或修改这些响应(在服务器端).这种特定JSON响应的特殊困难是不同的对象类型在同一个数组中:散列和文件数组.所以,我想直接将这个数组反序列化为强类型对象,而不是对象数组.我认为应该有可能实现CustomCreationConverter,但我无法想象如何.

JSON:

{
    "files":
    [
        "hash string",
        [
            ["first file name", 12],
            ["second file name", 34]
        ]
    ]
}
Run Code Online (Sandbox Code Playgroud)

对象结构,我正在努力实现:

public class RootObject
{
    [JsonProperty("files")]
    public FilesContainer Container
    {
        get;
        set;
    }
}

public class FilesContainer
{
    public string Hash
    {
        get;
        set;
    }

    public File[] Files
    {
        get;
        set;
    }
}

[JsonConverter(typeof(FileJsonConverter))]
public class File
{
    public string Name
    {
        get;
        set;
    }

    public int Size
    {
        get;
        set;
    }
}

class FileJsonConverter : JsonConverter
{
    public …
Run Code Online (Sandbox Code Playgroud)

json json.net multidimensional-array deserialization

5
推荐指数
1
解决办法
7948
查看次数

如何从 JArray 中选择元素的值

我在使用 C#(VS 2017,.Net 4.6)代码时遇到了一些麻烦。如果有人能帮忙就好了。我有一个 JSON 文件:

{
  "makerCommission": 10,
  "takerCommission": 10,
  "buyerCommission": 0,
  "updateTime": 1540015045989,
  "balances": [
    {
      "asset": "BTC",
      "free": "0.22222222",
      "locked": "0.00000000"
    },
    {
      "asset": "LTC",
      "free": "2.00000000",
      "locked": "3.00000000"
    },
    {
      "asset": "ETH",
      "free": "4.00000000",
      "locked": "5.00000000"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想使用以下方法检索任何硬币的“免费”价值:

result = (dynamic)JArray.Parse(MyData)
Run Code Online (Sandbox Code Playgroud)

我不想检索所有免费值。如果我选择 BTC,我怎样才能得到 0.22222222?

c# json json.net

2
推荐指数
1
解决办法
8452
查看次数