You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSON字符串中正确写入TextBox值?(附报错代码)

问题分析&靠谱解决方案

兄弟,你这明显是手动拼JSON踩格式坑了!咱们来捋清楚问题和解决办法:

你的代码里有俩致命问题:

  • txtName.Text没加引号直接拼进去,JSON解析器根本认不出这是字符串值;
  • JSON标准要求所有键和字符串值必须用双引号,你用单引号的话,大部分解析器都会报错。

而且手动拼JSON真的是给自己挖坑——万一用户输入个带双引号、反斜杠的内容,直接就把JSON搞崩了,还可能有注入风险。给你俩方案,优先选第二种哈:


方案1:临时救急的手动拼接修正

要是实在想先凑合用手动拼接,得给txtName.Text套上双引号,同时把所有单引号换成双引号(注意转义):

// 用转义双引号的写法
string json = @"{""MemberName"":""" + txtName.Text + @""", ""MemberEmail"":""mack@mack.com"", ""MemberPassword"":""111""}";

或者用C# 6+支持的字符串插值,看着更清楚:

string json = $"{{\"MemberName\":\"{txtName.Text}\", \"MemberEmail\":\"mack@mack.com\", \"MemberPassword\":\"111\"}}";

但还是那句话,这种方式治标不治本,遇到特殊字符照样炸。


方案2:用序列化生成JSON(强烈推荐)

直接用.NET的序列化库生成JSON,既安全又省心,还不用自己抠格式。

方法A:用.NET内置的System.Text.Json(.NET Core 3.0+/NET 5+可用)

先整个实体类对应你的JSON结构:

public class MemberInfo
{
    public string MemberName { get; set; }
    public string MemberEmail { get; set; }
    public string MemberPassword { get; set; }
}

然后实例化对象再序列化:

var member = new MemberInfo
{
    MemberName = txtName.Text,
    MemberEmail = "mack@mack.com",
    MemberPassword = "111"
};

string json = System.Text.Json.JsonSerializer.Serialize(member);

方法B:用Newtonsoft.Json(Json.NET,老项目常用)

如果是.NET Framework或者习惯用Json.NET,先去NuGet装Newtonsoft.Json包,然后同样搞实体类,再序列化:

var member = new MemberInfo
{
    MemberName = txtName.Text,
    MemberEmail = "mack@mack.com",
    MemberPassword = "111"
};

string json = Newtonsoft.Json.JsonConvert.SerializeObject(member);

这种方式会自动帮你处理所有特殊字符的转义,绝对不会出格式问题,以后要加字段也方便维护。


内容的提问来源于stack exchange,提问作者Jitender

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:08:56