如何用C#将序列化为json的字符串导入到sql server中数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用C#将序列化为json的字符串导入到sql server中数据库相关的知识,希望对你有一定的参考价值。

参考技术A 将序列化为json的字符串tostring,然后,直接当成字符存入数据库即可。本回答被提问者采纳

如何将sql查询序列化为json?

【中文标题】如何将sql查询序列化为json?【英文标题】:How to serialize sql query to json? 【发布时间】:2014-12-31 22:50:03 【问题描述】:

我正在尝试将 sql 查询序列化为 json:

cursor.execute("""SELECT b.tonode, n.name, b.fromnode FROM zusers u JOIN znode n
                                                    ON u.code = n.created_by
                                                JOIN zbond b
                                                    ON b.code = n.code
                                                WHERE u.userid = %s""", [user_id] )

data = serializers.serialize('json', rows, fields = ('id', 'name', 'parent'))

但它不起作用。是否可以序列化不是模型的对象,而是 sql 查询?

【问题讨论】:

'tuple' 对象没有属性 '_meta' 检查我的编辑,找出错误发生的原因。您必须将结果转换为 django 模型对象并将其传递给序列化程序。 你发现了吗? 【参考方案1】:

基于doc:

实际上,第二个参数可以是任何生成 Django 模型实例的迭代器,但它几乎总是一个 QuerySet

试试这个:

query = """SELECT b.tonode, n.name, b.fromnode FROM zusers u JOIN znode n
                                                    ON u.code = n.created_by
                                                JOIN zbond b
                                                    ON b.code = n.code
                                                WHERE u.userid = %s"""%user_id

data = serializers.serialize('json', YourModel.objects.raw(query), fields=('id', 'name', 'parent'))

【讨论】:

我不知道应该使用什么模型而不是“YourModel”。我只需要序列化该行列表 SQL 查询的字符串格式不是一个好主意。 docs.djangoproject.com/en/1.8/topics/db/sql/…【参考方案2】:

试试这个代码:

cursor = connection.cursor()
cursor.execute("""SELECT b.tonode, n.name, b.fromnode FROM zusers u JOIN znode n ON u.code = n.created_by JOIN zbond b ON b.code = n.code WHERE u.userid = %s""", [user_id])
rows = cursor.fetchall()
result = []
keys = ('id','name','parent',)
for row in rows:
    result.append(dict(zip(keys,row)))
json_data = json.dumps(result)
return HttpResponse(json_data, content_type="application/json")

【讨论】:

【参考方案3】:

试试这个代码

    cursor = connection.cursor()
    cursor.execute("""SELECT b.tonode, n.name, b.fromnode FROM zusers u JOIN znode n ON u.code = n.created_by JOIN zbond b ON b.code = n.code WHERE u.userid = %s""", [user_id])
    cursor.fetchall()
    json_data = dictfetchall(cursor)
    return HttpResponse(json_data, content_type="application/json")

def dictfetchall(cursor):
    "Return all rows from a cursor as a dict"
     columns = [col[0] for col in cursor.description]
     return [
         dict(zip(columns, row))
         for row in cursor.fetchall()
     ]

【讨论】:

【参考方案4】:
cursor = connection.cursor()
cursor.execute("""SELECT b.tonode, n.name, b.fromnode FROM zusers u JOIN znode n ON u.code = n.created_by JOIN zbond b ON b.code = n.code WHERE u.userid = %s""", [user_id])
rows = cursor.fetchall()
result = []
keys = ('id','name','parent',)
for row in rows:
    result.append(dict(zip(keys,row)))
json_data = json.dumps(result)
return HttpResponse(json_data, content_type="application/json")

【讨论】:

以上是关于如何用C#将序列化为json的字符串导入到sql server中数据库的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 字符串反序列化为多个 C# 对象

如何将 C# 匿名类型序列化为 JSON 字符串?

将 JSON 反序列化为 C# 对象以在网格中将嵌套数组显示为字符串

c#生成的Json如何用python解析

C# JSON 将文件反序列化为对象列表失败,并将字符串转换为集合错误

请问,如何用C#解析UDP数据包中的数据,其中UDP包中的信息是来自激光雷达采集到的距离、方位角等信息。