【问题标题】:Web api saving json to database and get as jsonWeb api 将 json 保存到数据库并获取为 json
【发布时间】:2017-02-04 15:35:12
【问题描述】:

我正在使用 web api,我需要将 json 对象保存到我的数据库中。我将获取屏幕尺寸、颜色……并保存到数据库。

{ "height": 1536, "width": 2048, "color": "#114521" }

但我不想为这些数据创建 C# 类。我想创建一个名为 settings 的类:

public class Settings{ 
   public string Username {get;set;}
   public string Data {get;set;}  // This will be json settings data
}

但我会以 json 对象的形式取回它。

我正在创建一个新的设置 C# 实例:

public Settings Get(){
   var settings = new Settings{
    Username="myname",
    Data="{ \"height\": 1536, \"width\": 2048, \"color\": \"#114521\" }"
   };
   return settings;
 }

Data 将作为文本而不是 json 对象发送给客户端。 (我会将Data 以原始 json 格式保存到数据库中。)

【问题讨论】:

标签: c# json asp.net-web-api


【解决方案1】:

在提供的示例中,Json 是一个字符串,在反序列化之前它不是对象。 Settings.Data 中包含的字符串可以传递给您的插入查询。您可以有一列来存储整个 Json 字符串。如果您的数据库是 SQL Server,则 varchar 数据类型的最大长度为 8000,或者您可以使用几乎无限的 varchar(max)。

所以要将你的 json 字符串存储在数据库中:

  1. 创建一个列(如果不存在)来存储数据
  2. 创建 SQL 插入语句以将值插入数据库。如:

    INSERT INTO MyTable (UserName, JsonColumnName) VALUES (@userName, @JsonString)
    
  3. 将 Settings.Data 中的值传递给您的插入语句或 SQLParameter 对象,具体取决于您的应用程序与数据库交互的格式。

从数据库中获取Json值:

  1. 创建一个选择状态以根据用户名或用于识别 json 字符串的任何唯一 ID 来查找正确的 json 字符串,
  2. 从查询结果中检索 json 字符串。

【讨论】:

    【解决方案2】:

    没关系,它不是作为Json字符串出现的。在客户端序列化为 json 时,会转换为对象。

    var obj = JSON.parse('{ \"height\": 1536, \"width\": 2048, \"color\": \"#114521\" }');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 2020-07-24
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      相关资源
      最近更新 更多