在c#中将字符串转换为json数组

本文关键字:json 数组 转换 字符串 | 更新日期: 2023-09-27 18:07:06

我是c#新手。我想把这两个字符串转换成一个JSON数组。
我尝试了以下操作:

var username = "username";
var password = "XXXXXXXX";
var json_data = "result":[{"username":username,"password":password}]'; //To convert the string to Json array i tried like this
MessageBox.Show(json_data);

它不工作,我得到很多错误。

我已经浏览了以下链接:

http://json.codeplex.com/

将字符串转换为Json数组

http://www.codeproject.com/Articles/272335/JSON-Serialization-and-Deserialization-in-ASP-NET

将字符串转换为json

学习如何将字符串转换为Json数组。在上面的url中很好地解释了,但对于我的情况,我不知道如何将这两个字符串转换为单个Json数组。

我希望输出像这样的格式,

[{"result":{"username":"Tom","password":"XXXXXXX"}}]

请帮我做这件事

在c#中将字符串转换为json数组

可以使用JSON序列化器API。一个常用的是Newtonsoft的,叫做Json.NET。

这种API的任务是将c#对象转换为JSON(也称为序列化),并将JSON数据转换为c#对象(反序列化)。

在你的例子中,Newtonsoft JSON API可以这样使用。

public class UserData { public string username; public string password; }
var userData = new UserData() { username = "Tom", password = "XXXXXXXX" };
UserData[] arr = new UserData[] { userData };
string json_data = JsonConvert.SerializeObject(arr); // this is the Newtonsoft API method
// json_data will contain properly formatted Json. Something like [{"result":{"username":"Tom","password":"XXXXXXX"}}] 
MessageBox.Show(json_data); 

请原谅我打字,因为我正在打电话。

扩展bytefire的答案,有两种方法可以实现:

  1. 创建一个具有所需属性的类,在您的示例中是usernamepassword。我将用Json中的JsonProperty注释属性。. NET以便序列化器可以匹配它们,而不考虑小写/大写:

    public class User
    {
       [JsonProperty(PropertName = username)]
       public string Username { get; set; }
       [JsonProperty(PropertName = password)]
       public string Password { get; set; }
    }
    

然后,使用JsonConvert序列化对象。SerializeObject:

var user = new User { Username = "user", Password = "pass" };
var jsonUser = JsonConvert.SerializeObject(user);
  1. 使用JsonTextWriter从Json。. NET,你可以构造一个json而不创建对象:

    var stringBuilder = new StringBuilder();
    var stringWriter = new StringWriter(stringBuilder);
    string jsonString = null;
    using (var jsonWriter = new JsonTextWriter(stringWriter))
    {
       writer.Formatting = Formatting.Indented;
       writer.WriteStartObject();
       writer.WriterPropertyName("username");
       writer.WritePropertyValue("user");
       writer.WriterPropertyName("password");
       writer.WritePropertyValue("pass");
       writer.WriteEnd();
       writer.WriteEndObject();
       jsonString = writer.ToString();
    }
    

如果你认为JSON.net太大,可以选择简单的Json。

在Javascript对象表示法中,顶层总是一个对象。

在JSON中,数组不是对象,但可以是值。

你可以把语法展开成这样:

{ string : [ { string : string , string : string },{ string : string , string : string } ] }

在你的例子中可以是:

{ "allUsers": [ { "name": "Luis" , "password": "R0Cke+" }, { "name": "Janette" , "password": "BookTour2011" } ] }

这是我想到的最简单的方法。当我想解析从YelpAPI获得的JSON时,它为我工作。

  1. 将JSON作为类粘贴到visual studio或其他IDE中
  2. 请求API并在var contentJSON中获取JSON内容。
  3. T在这里从是一个类的列表,你想使而值1精确字符串在JSON文件中使用。

    var contentJson = await SendRequest(request);

    动态响应= JsonConvert.DeserializeObject(contentJson);

    List abc = response.value1.ToObject>();

注意:T和value1在JSON中是相同的,但是当我们将JSON粘贴为类时,我们在JSON树中得到T类和value1作为父值。代码: