相关疑难解决方法(0)

从JSON Schema生成C#类

我正在创建一个C#WCF Web服务,它以JSON格式返回大量数据.客户端是一个iPad应用程序,目前正在由另一个团队开发,所以我正在研究规范,没有示例数据.
目前,JSON字符串是由.net框架创建的,我的Web服务返回一个C#对象,其中包含然后使用DataContracts由框架序列化的所有信息.

我的问题是通信规范只包含JSON Schema文件(基于http://json-schema.org/).为了便于开发,我想在C#中生成相应的类,但由于文件包含大量信息,而且有十几个文件,我真的不想手动创建这些类.

所以我正在寻找一种工具,可以让我:

  • 从JSON模式生成C#类.
  • 将JSON模式转换为XSD文件.然后创建类很容易,因为有很多工具可以从XSD生成类.

我找到了许多工具来验证JSON模式的JSON字符串,或者从JSON字符串生成类,但似乎没有任何帮助我的东西.
JSON.NET,但它似乎是一个库,而不是一个工具,我没有找到任何有关使用它生成类的信息.

所以,如果有人知道一个工具或者有关于如何生成这些类的想法(我尝试了一个用Java创建类但我无法使其工作的工具).

.net wcf json jsonschema

61
推荐指数
6
解决办法
5万
查看次数

C# HttpClient 在字典字符串/对象中使用 FormUrlEncodedContent 对象发布内容

我正在尝试将内容发布到我的服务器。这就是我过去一直这样做的方式,直到我不得不使用字符串以外的对象为止。

using (HttpClient client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(authType, tokens);
    var postParams = new Dictionary<string, object>();

    postParams.Add("string", string);
    postParams.Add("int", string);
    postParams.Add("datetime", DateTime);
    postParams.Add("datetime", DateTime);
    postParams.Add("Match", Match);
    postParams.Add("TicketId", token);

    using (var postContent = new FormUrlEncodedContent(postParams.ToDictionary()))
    {
        var myContent = JsonConvert.SerializeObject(postParams);
        var buffer = System.Text.Encoding.UTF8.GetBytes(myContent);
        var byteContent = new ByteArrayContent(buffer);
        byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

        using (HttpResponseMessage response = await client.PostAsync(@"http://url/api", byteContent))
        {
            response.EnsureSuccessStatusCode(); // Throw if httpcode is an error
            using (HttpContent content = response.Content)
            {
                string result = …
Run Code Online (Sandbox Code Playgroud)

c# encoding json http httpclient

3
推荐指数
1
解决办法
8341
查看次数

从JSON自动生成C#类,包括属性初始值设定项

有许多很好的方法可以从JSON自动生成C#代码,例如此处此处.

但是,生成的代码不包含属性初始值设定项.例如,以下JSON:

{
"Name" : "Blastoise"
}
Run Code Online (Sandbox Code Playgroud)

得到反序列化:

public class RootObject
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

大概这是设计的,因为JSON中使用的值可能会被覆盖,所以添加初始化器可能会让那些不想要它们的人烦恼.

但如果我想要怎么办?如果没有手动手动添加每个值,有没有办法将JSON反序列化为以下内容?

public class RootObject
{
    public string Name { get; set; } = "Blastoise";
}
Run Code Online (Sandbox Code Playgroud)

显然,在这种情况下,手动编辑很容易,但对于较大的JSON对象,手动编辑变得乏味.

c# json

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

需要帮助序列化/反序列化此JSON

我有这个简单的JSON,我正在反序列化这个JSON,所以我可以获得元素.这是我的JSON:

{
  "QuestionIDs": [
    "QID1",
    "QID3"
  ],
  "QuestionDefinitions": {
    "Question1": {
      "DETag": "Q1",
      "Config": {
        "QDescription": "UseText"
      },
      "COrder": [
        "1",
        "2",
        "3"
      ],
      "Validation": {
        "Settings": {
          "ForceResponse": "OFF",
          "ForceResponseType": "ON",
          "Type": "None"
        }
      }
    }
  },
  "NextButton": null,
  "PreviousButton": false
}
Run Code Online (Sandbox Code Playgroud)

这是我写的代码:

[DataContract]
public class RootObject
{
    [DataMember]
    public Dictionary<string, Dictionary<string, string>> QuestionDefinitions { get; set; }
    [DataMember]
    public List<string> QuestionIDs { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

QuestionIDs工作得很好.但是,QuestionDefinitions不起作用.它说它是一个空序列.我不确定是什么问题.

我希望能够访问QuestionDefinitions.

我试过了Json.Net.面对同样的问题.我能够得到简单的元素.但是,无法访问QuestionDefinitions. …

c# json json.net

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

如何轻松为 Json 对象创建类

我正在尝试使用此对象创建一个List类:

{
  "801": {
    "Name": "SomeWhere",
    "Lanes": {
      "2": {
        "Ip": "172.23.101.21"
      },
      "4": {
        "Ip": "172.23.101.41"
      },
      "6": {
        "Ip": "172.23.101.61"
      },
      "8": {
        "Ip": "172.23.101.81"
      },
      "9": {
        "Ip": "172.23.101.91"
      },
      "11": {
        "Ip": "172.23.101.111"
      }
    }
  },
  "803": {
    "Name": "OverThere",
    "Lanes": {
      "3": {
        "Ip": "172.23.103.31"
      },
      "6": {
        "Ip": "172.23.103.61"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我需要它才能像这样使用它:List<ClassOfJson> jsonData = new List<ClassOfJson>();

我在 C# 中使用 Newtonsoft。我可以做什么来解决这个问题?

c# json

0
推荐指数
1
解决办法
435
查看次数

标签 统计

json ×5

c# ×4

.net ×1

encoding ×1

http ×1

httpclient ×1

json.net ×1

jsonschema ×1

wcf ×1