繁体   English   中英

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

[英]Convert string to json array in C#

我是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数组。 在上面的网址中有很好的解释,但是对于我来说,我不知道如何将这两个字符串转换为单个Json数组。

我希望输出是这种格式,

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

请帮助我做到这一点。

您可以使用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.NET的JsonProperty注释属性,以便序列化程序可以匹配它们而JsonProperty考虑大小写:

     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. 使用Json.NET的 JsonTextWriter ,您可以在不创建对象的情况下构造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. 从这里开始是您想在JSON文件中使用值1确切字符串的情况下列出其类别之一。

    var contentJson =等待SendRequest(request);

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

    列出abc = response.value1.ToObject>();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM