C#中的Linq to JSON操作详解

目录
  • 一、创建JObject and JArrary实例
    • 1、手动创建JSON
      • 1、创建JSON对象,JObject
      • 2、创建JSON数组,JArrary
    • 2、使用Linq创建JSON
    • 3、从对象创建JSON
    • 4、解析JSON文本
    • 5、从文件中加载JSON
  • 二、使用JsonConvert.DeserializeObject反序列化JOSN片段
    • 1、数组数据
    • 2、对象格式
  • 三、修改JObject and JArrary实例
  • 四、查询JObject and JArrary实例
    • 判断Key是否存在
  • 五、用LINQ表达式进行查询
    • 可以使用LINQ to JSON手动将JSON转换为. net对象。
  • 六、使用函数SelectToken生成JToken对象可以简化查询语句
    • 1、SelectToken
    • 2、使用LINQ来SelectToken
    • 3、使用JSONPath来SelectToken
  • 七、如果Json中的Key是变化的但是结构不变,如何获取所要的内容?
  • 八、综合实例

Linq to JSON是用来操作JSON对象的,可以用于快速查询、修改和创建JSON对象。

当JSON对象内容比较复杂,而我们仅仅需要其中的一小部分数据时,可以考虑使用Linq to JSON来读取和修改部分的数据而非反序列化全部。

参考:Json.NET Documentation

在进行Linq to JSON之前,首先要了解一下用于操作Linq to JSON的类.

类名 说明
JObject 用于操作JSON对象
JArray 用语操作JSON数组
JValue 表示数组中的值
JProperty 表示对象中的属性,以"key/value"形式
JToken 用于存放Linq to JSON查询后的结果

一、创建JObject and JArrary实例

1、手动创建JSON

设置值和一次创建一个对象或数组可以让您完全控制,但是它比其他选项更冗长。

1、创建JSON对象,JObject

JObject staff = new JObject();
staff.Add(new JProperty("Name", "Jack"));
staff.Add(new JProperty("Age", 33));
staff.Add(new JProperty("Department", "Personnel Department"));
staff.Add(new JProperty("Leader", new JObject(new JProperty("Name", "Tom"), new JProperty("Age", 44), new JProperty("Department", "Personnel Department"))));
Console.WriteLine(staff.ToString());
//返回
//{
//  "Name": "Jack",
//  "Age": 33,
//  "Department": "Personnel Department",
//  "Leader": {
//    "Name": "Tom",
//    "Age": 44,
//    "Department": "Personnel Department"
//  }
//}

2、创建JSON数组,JArrary

JArray arr = new JArray();
arr.Add(new JValue(1));
arr.Add(new JValue(2));
arr.Add(new JValue(3));
Console.WriteLine(arr.ToString());

//返回
//[
//  1,
//  2,
//  3
//]

2、使用Linq创建JSON

使用LINQ声明式地创建JSON对象,是一种从值集合创建JSON的快速方法。

List posts = GetPosts();

JObject rss =
    new JObject(
        new JProperty("channel",
            new JObject(
                new JProperty("title", "James Newton-King"),
                new JProperty("link", "http://james.newtonking.com"),
                new JProperty("description", "James Newton-King's blog."),
                new JProperty("item",
                    new JArray(
                        from p in posts
                        orderby p.Title
                        select new JObject(
                            new JProperty("title", p.Title),
                            new JProperty("description", p.Description),
                            new JProperty("link", p.Link),
                            new JProperty("category",
                                new JArray(
                                    from c in p.Categories
                                    select new JValue(c)))))))));

Console.WriteLine(rss.ToString());

//{
//  "channel": {
//    "title": "James Newton-King",
//    "link": "http://james.newtonking.com",
//    "description": "James Newton-King\'s blog.",
//    "item": [
//      {
//        "title": "Json.NET 1.3 + New license + Now on CodePlex",
//        "description": "Announcing the release of Json.NET 1.3, the MIT license and being available on CodePlex",
//        "link": "http://james.newtonking.com/projects/json-net.aspx",
//        "category": [
//          "Json.NET",
//          "CodePlex"
//        ]
//      },
//      {
//        "title": "LINQ to JSON beta",
//        "description": "Announcing LINQ to JSON",
//        "link": "http://james.newtonking.com/projects/json-net.aspx",
//        "category": [
//          "Json.NET",
//          "LINQ"
//        ]
//      }
//    ]
//  }
//}

3、从对象创建JSON

JObject.FromObject(object o):o为要转化的对象,返回一个JObject对象

最后一个选项是使用FromObject()方法从非JSON类型创建JSON对象。

下面的示例展示了如何从匿名对象创建JSON对象,但是任何. net类型都可以与FromObject一起创建JSON。

var posts = new[] {
     new {
        Title="Json.NET 1.3 + New license + Now on CodePlex",
        Description= "Announcing the release of Json.NET 1.3, the MIT license and being available on CodePlex",
        Link="http://james.newtonking.com/projects/json-net.aspx",
        Categories=new[]{ "Json.NET","CodePlex"}
    },
     new {
        Title="LINQ to JSON beta",
        Description= "Announcing LINQ to JSON",
        Link="http://james.newtonking.com/projects/json-net.aspx",
        Categories=new[]{ "Json.NET","LINQ"}
    },
};

JObject o = JObject.FromObject(new
{
    channel = new
    {
        title = "James Newton-King",
        link = "http://james.newtonking.com",
        description = "James Newton-King's blog.",
        item =  //返回数组
        from p in posts
        orderby p.Title
        select new
        {
            title = p.Title,
            description = p.Description,
            link = p.Link,
            category = p.Categories
        }
    }
});

Console.WriteLine(o.ToString());

//{
//  "channel": {
//    "title": "James Newton-King",
//    "link": "http://james.newtonking.com",
//    "description": "James Newton-King\'s blog.",
//    "item": [
//      {
//        "title": "Json.NET 1.3 + New license + Now on CodePlex",
//        "description": "Announcing the release of Json.NET 1.3, the MIT license and being available on CodePlex",
//        "link": "http://james.newtonking.com/projects/json-net.aspx",
//        "category": [
//          "Json.NET",
//          "CodePlex"
//        ]
//      },
//      {
//        "title": "LINQ to JSON beta",
//        "description": "Announcing LINQ to JSON",
//        "link": "http://james.newtonking.com/projects/json-net.aspx",
//        "category": [
//          "Json.NET",
//          "LINQ"
//        ]
//      }
//    ]
//  }
//}

4、解析JSON文本

JObject.Parse(string json):json含有JSON对象的字符串,返回为JObject对象

//解析JSON对象
string json = @"{
  CPU: 'Intel',
  Drives: [
    'DVD read/writer',
    '500 gigabyte hard drive'
  ]
}";

JObject o = JObject.Parse(json);

//解析JSON数组
string json = @"[
  'Small',
  'Medium',
  'Large'
]";

JArray a = JArray.Parse(json);

5、从文件中加载JSON

using (StreamReader reader = File.OpenText(@"c:\person.json"))
{
    JObject o = (JObject)JToken.ReadFrom(new JsonTextReader(reader));
    // do stuff
}

二、使用JsonConvert.DeserializeObject反序列化JOSN片段

1、数组数据

string jsonArrayText= "[{'a','al'.'b','b1'},{'a','a2'.'b','b2'}]";
JArray ja = (JArray)JsonConvert.DeserializeObject(jsonArrayText); 

string ja1a==ja[1]["a"].ToString();
//或者
JObject o=(JObject)ja[1];
string ja1a=o["a"].ToString();

2、对象格式

siring jsonText= "{\"beijing\":{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}";

JObject jo =(JObject)JsonConvert.DeserializeObject(jsonArrayText);
string zone =jo["beijing"]["zone"].ToString();

三、修改JObject and JArrary实例

string json = @"{
                 'post':{
                     'Title':'修改JArray和JObject',
                     'Link':'http://write.blog.csdn.net',
                     'Description':'这是一个修改JArray和JObject的演示案例',
                     'Item':[]
                 }
             }";

JObject o = JObject.Parse(json);
JObject post = (JObject)o["post"];

post["Title"] = ((string)post["Title"]).ToUpper();
post["Link"] = ((string)post["Link"]).ToUpper();

post.Property("Description").Remove();

post.Property("Link").AddAfterSelf(new JProperty("New", "新添加的属性"));

JArray a = (JArray)post["Item"];
a.Add("修改JArray");
a.Add("修改JObject");

移除属性

JObject jObj = JObject.Parse(json);
jObj.Remove("Colleagues");//跟的是属性名称
Console.WriteLine(jObj.ToString());

四、查询JObject and JArrary实例

将一个值从LINQ转换为JSON的最简单方法是:使用JObject/JArray上的ItemObject索引,然后将返回的JValue转换为所需的类型。

string json = @"{
  'channel': {
    'title': 'James Newton-King',
    'link': 'http://james.newtonking.com',
    'description': 'James Newton-King\'s blog.',
    'item': [
      {
        'title': 'Json.NET 1.3 + New license + Now on CodePlex',
        'description': 'Announcing the release of Json.NET 1.3, the MIT license and the source on CodePlex',
        'link': 'http://james.newtonking.com/projects/json-net.aspx',
        'categories': [
          'Json.NET',
          'CodePlex'
        ]
      },
      {
        'title': 'LINQ to JSON beta',
        'description': 'Announcing LINQ to JSON',
        'link': 'http://james.newtonking.com/projects/json-net.aspx',
        'categories': [
          'Json.NET',
          'LINQ'
        ]
      }
    ]
  }
}";

JObject rss = JObject.Parse(json);

string rssTitle = (string)rss["channel"]["title"];
// James Newton-King

string itemTitle = (string)rss["channel"]["item"][0]["title"];
// Json.NET 1.3 + New license + Now on CodePlex

JArray categories = (JArray)rss["channel"]["item"][0]["categories"];
// ["Json.NET", "CodePlex"]

IList<string> categoriesText = categories.Select(c => (string)c).ToList();
// Json.NET
// CodePlex

判断Key是否存在

JToken test = new JObject();

if (test["a"] == null)
{
    Console.WriteLine("键值key不存在!");
}

JObject test1 = test as JObject;
if (test1.Property("a") == null || test1.Property("a").ToString() == "")
{
    Console.WriteLine("键值key不存在!");
}

五、用LINQ表达式进行查询

也可以使用LINQ查询JObject/JArray。

Children()以IEnumerable的形式返回JObject/JArray的子值,然后可以使用标准的Where/OrderBy/Select LINQ操作符查询这些子值。

注意:

Children()返回token的所有子元素。如果它是一个JObject,它将返回一个要使用的属性集合,如果它是一个JArray,您将得到一个数组值的集合。

var postTitles =
    from p in rss["channel"]["item"]
    select (string)p["title"];

foreach (var item in postTitles)
{
    Console.WriteLine(item);
}

//LINQ to JSON beta
//Json.NET 1.3 + New license + Now on CodePlex

var categories =
    from c in rss["channel"]["item"].SelectMany(i =&gt; i["categories"]).Values&lt;string&gt;()
    group c by c
    into g
    orderby g.Count() descending
    select new { Category = g.Key, Count = g.Count() };

foreach (var c in categories)
{
    Console.WriteLine(c.Category + " - Count: " + c.Count);
}

//Json.NET - Count: 2
//LINQ - Count: 1
//CodePlex - Count: 1

可以使用LINQ to JSON手动将JSON转换为. net对象。

当您处理与. net对象不匹配的JSON时,手动序列化和反序列化. net对象是很有用的。

string jsonText = @"{
  'short': {
    'original': 'http://www.foo.com/',
    'short': 'krehqk',
    'error': {
      'code': 0,
      'msg': 'No action taken'
    }
  }
}";

JObject json = JObject.Parse(jsonText);

Shortie shortie = new Shortie
{
    Original = (string)json["short"]["original"],
    Short = (string)json["short"]["short"],
    Error = new ShortieException
    {
        Code = (int)json["short"]["error"]["code"],
        ErrorMessage = (string)json["short"]["error"]["msg"]
    }
};

Console.WriteLine(shortie.Original);
// http://www.foo.com/

Console.WriteLine(shortie.Error.ErrorMessage);
// No action taken

public class Shortie
{
    public string Original { get; set; }
    public string Shortened { get; set; }
    public string Short { get; set; }
    public ShortieException Error { get; set; }
}

public class ShortieException
{
    public int Code { get; set; }
    public string ErrorMessage { get; set; }
}

六、使用函数SelectToken生成JToken对象可以简化查询语句

1、SelectToken

SelectToken是JToken上的一个方法,它将字符串路径作为子Token名,返回子Token。如果在路径的位置找不到Token,则SelectToken返回空引用。

该路径由属性名和按句点分隔的数组索引组成,例如manufacturer [0]. name。

JObject jObj = JObject.Parse(json);
JToken name = jObj.SelectToken("Name");
Console.WriteLine(name.ToString());

结果:Jack

2、使用LINQ来SelectToken

SelectToken支持JSONPath查询。点击这里了解更多关于JSONPath的信息。

查询最后一名同事的年龄

//将json转换为JObject
JObject jObj = JObject.Parse(json);
var age = jObj.SelectToken("Colleagues[1].Age");
Console.WriteLine(age.ToString());

// manufacturer with the name 'Acme Co'
JToken acme = o.SelectToken("$.Manufacturers[?(@.Name == 'Acme Co')]");

Console.WriteLine(acme);
// { "Name": "Acme Co", Products: [{ "Name": "Anvil", "Price": 50 }] }

// name of all products priced 50 and above
IEnumerable pricyProducts = o.SelectTokens("$..Products[?(@.Price >= 50)].Name");

foreach (JToken item in pricyProducts)
{
    Console.WriteLine(item);
}
// Anvil
// Elbow Grease

结果:29

3、使用JSONPath来SelectToken

SelectToken可以与标准的LINQ方法结合使用。

利用SelectToken来查询所有同事的名字

JObject jObj = JObject.Parse(json);
var names = jObj.SelectToken("Colleagues").Select(p => p["Name"]).ToList();
foreach (var name in names)
    Console.WriteLine(name.ToString());

IList<string> storeNames = o.SelectToken("Stores").Select(s => (string)s).ToList();
// Lambton Quay
// Willis Street

IList<string> firstProductNames = o["Manufacturers"].Select(m => (string)m.SelectToken("Products[1].Name")).ToList();
// null
// Headlight Fluid

decimal totalPrice = o["Manufacturers"].Sum(m => (decimal)m.SelectToken("Products[0].Price"));

结果:Tom Abel

七、如果Json中的Key是变化的但是结构不变,如何获取所要的内容?

例如:

{
    "trends": {
        "2013-05-31 14:31": [
            {
                "name": "我不是谁的偶像",
                "query": "我不是谁的偶像",
                "amount": "65172",
                "delta": "1596"
            },
            {
                "name": "世界无烟日",
                "query": "世界无烟日",
                "amount": "33548",
                "delta": "1105"
            }
        ]
    },
    "as_of": 1369981898
}

其中的"2013-05-31 14:31"是变化的key,如何获取其中的"name","query","amount","delta"等信息呢?
通过Linq可以很简单地做到:

var jObj = JObject.Parse(jsonString);
var tends = from c in jObj.First.First.First.First.Children()
            select JsonConvert.DeserializeObject(c.ToString());
public class Trend
{
    public string Name { get; set; }
    public string Query { get; set; }
    public string Amount { get; set; }
    public string Delta { get; set; }
}

八、综合实例

void Main()
{
    string json = "{\"Name\" : \"Jack\", \"Age\" : 34, \"Colleagues\" : [{\"Name\" : \"Tom\" , \"Age\":44},{\"Name\" : \"Abel\",\"Age\":29}] }";
    // 获取员工名称
    JObject jObject = JObject.Parse(json);
    var name = jObject.Value<string>("Name");

    Console.WriteLine(name);
    // 获取员工年龄
    JToken jToken = jObject.SelectToken("Age");
    Console.WriteLine(jToken.ToString());

    // 获取同事信息
    JToken jToken1 = jObject["Colleagues"];
    Console.WriteLine(jToken1.ToString());

    Console.WriteLine("=============================");
    // 获取员工同事的所有姓名
    var names = from staff in jToken1.Children()
                select (string)staff["Name"];
    // var names = jObject.SelectToken("Colleagues").Select(p => p["Name"]).ToList();
    foreach (var item in names)
    {
        Console.WriteLine(item);
    }

    Console.WriteLine("=============================");
    // 修改Jack的年龄
    jObject["Age"] = 99;
    Console.WriteLine(jObject.ToString());
    // 修改同事Tome的年龄
    jToken1[0]["Age"] = 45;
    Console.WriteLine(jObject.ToString());

    Console.WriteLine("=============================");
    // Abel离职了
    jObject["Colleagues"][1].Remove();
    Console.WriteLine(jObject.ToString());
    // 移除Jack的同事
    jObject.Remove("Colleagues");
    Console.WriteLine(jObject.ToString());

    Console.WriteLine("=============================");
    // Jack缺少部门信息
    jObject["Age"].Parent.AddAfterSelf(new JProperty("Department", "总裁办"));
    // 来了一个新员工Jerry
    JObject linda = new JObject(new JProperty("Name", "Linda"), new JProperty("Age", "23"));
    jObject.Add(new JProperty("Colleagues", new JArray() { linda }));
    Console.WriteLine(jObject.ToString());
}

// Define other methods and classes here

到此这篇关于C#使用LINQ to JSON的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C#中的Linq To XML讲解

    一.概述 Overview - LINQ to XML | Microsoft 官方文档 LINQ to XMLLINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework.NET Framework 编程语言中处理 XML. 在使用LINQ to XML时需要添加System.Xml.Linq.dll的引用. XElement类 表示XML元素,它是XContainer类的派生类,而XContainer类又派生于XNode类.一个元素就

  • C#中LINQ to DataSet操作及DataTable与LINQ相互转换

    一.DataTable的扩展方法: 1.DataTable转Linq:AsEnumerable 方法 返回的EnumerableRowCollection<DataRow> 实现了 IEnumerable<T>接口.其中泛型参数T是DataRow. 此对象可用在 LINQ表达式或方法查询中. 语法: public static EnumerableRowCollection<DataRow> AsEnumerable (this DataTable source); 在

  • C#集合查询Linq在项目中使用详解

    目录 Linq Lambda Linq项目中的一次使用经历 Linq to js [在前端的应用] 要说哪门后端语言的语法优雅,那就不得不提C#,而在我看来,LINQ语法可以说是其优雅的重要一环! 通常后端从数据库查询出来的数据并不是直接返回给前端使用的(不然前端....),而是需要进行二次的加工筛选处理等操作!而这个操作就离不开LINQ,不然for循环套for循环,先不说可不可行,肯定可行,但是代码的可读性完全丢失,其他同行看到也会笑话人,连编译器运行这段代码时也是发尽牢骚(....),从而导

  • Linq中ToList()和CopyToDataTable()用法详解

    最近在项目中使用了Linq,想把Linq的查询结果直接转换成DataTable对象,通过查找发现Linq有一个CopyToDataTable<T>的泛型方法,该方法只能在T是DataRow的情况下使用,发现了这个方法以后就直接在项目中使用了,但是在使用的过程中发现,如果Linq的查询结果不包含任何DataRow对象的时候,使用CopyToDataTable()方法会报错,代码如下: using System; using System.Collections.Generic; using Sy

  • C#中的LINQ to Objects详解

    目录 一.概述 二. Linq to Objects中的延迟计算 1. Linq延迟计算的注意点 2. 整理Linq to Objects中运算符延迟计算特性 1.具有延迟计算的运算符 2.立即执行的运算符 三.LINQ 和字符串 1.查询文本块 实例1: 统计单词在字符串中出现的次数 实例2: 在文本文件中,找出包含一组指定单词的的句子. 实例3: 查询字符串中的字符 实例4:用正则表达式结合 LINQ 查询 2.查询文本格式的半结构化数据 实例1.如何查找两个集合间的差异 实例2: 根据某字

  • 带你一文了解C#中的LINQ

    目录 前言 LINQ的根基 IEnumerable和IEnumerator LINQ的基本用法 扩展方法在LINQ的应用:LINQ的流式语法 LINQ的查询表达式:LINQ的查询语法 LINQ的延迟执行:IQueryable 附:将内存中对象转换为 XML 参考 源码 总结 前言 本文主要的是泛谈LINQ是啥?以及常见的用法大纲如下: LINQ的那些根基 LINQ的一些基本用法 LINQ的根基 IEnumerable和IEnumerator 为啥能够被foreach? 实际上,能够被foreac

  • C#中的Linq to JSON操作详解

    目录 一.创建JObject and JArrary实例 1.手动创建JSON 1.创建JSON对象,JObject 2.创建JSON数组,JArrary 2.使用Linq创建JSON 3.从对象创建JSON 4.解析JSON文本 5.从文件中加载JSON 二.使用JsonConvert.DeserializeObject反序列化JOSN片段 1.数组数据 2.对象格式 三.修改JObject and JArrary实例 四.查询JObject and JArrary实例 判断Key是否存在 五

  • 对django views中 request, response的常用操作详解

    request 获取post请求中的json数据 def hello(request): data = json.loads(request.body) ... json格式还有一些 非表单序列化 的格式,都可以从 request.body 中获取请求体中的数据,对于ajax请求可以使用 request.is_ajax() 来判断 根据请求的信息获取base url(有时候服务的域名比较多,还是需要动态的拼接一下url信息) # url http://wificdn.com:8888/wxpay

  • java迭代器中删除元素的实例操作详解

    我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的操作.下面我们就remove进行讲解,然后对删除元素方法进行说明,最后带来实例的展示. 1.Iterator中的remove void remove():删除迭代器刚越过的元素 从基础集合中移除这个迭代器返回的最后一个元素(可选操作).两个线程中都删除,保证线程的同步. 2.删除元素说明 (1)迭代

  • java中JDBC增删改查操作详解

    目录 前言 一.增删改操作 1.1 PreparedStatement介绍  1.2 增删改操作   1.3 测试 二.查操作 2.1 通用对不同表进行一条数据查询操作 2.2 通用对不同表进行多条数据查询操作 总结 前言         在上一篇博客我们介绍了JDBC的概念以及连接数据库的五种方式JDBC概述及数据库连接方式(数据库连接方式推荐使用第五种),那么我们既然连接上数据库了,那就要对数据进行操作了,那么这一篇我们就来介绍常规的增删改 查操作.       我们先看一遍步骤:    

  • PyTorch中的拷贝与就地操作详解

    前言 PyTroch中我们经常使用到Numpy进行数据的处理,然后再转为Tensor,但是关系到数据的更改时我们要注意方法是否是共享地址,这关系到整个网络的更新.本篇就In-palce操作,拷贝操作中的注意点进行总结. In-place操作 pytorch中原地操作的后缀为_,如.add_()或.scatter_(),就地操作是直接更改给定Tensor的内容而不进行复制的操作,即不会为变量分配新的内存.Python操作类似+=或*=也是就地操作.(我加了我自己~) 为什么in-place操作可以

  • Oracle数据库中的基本建库操作详解

    图形建库: 1. 确定是否存在要建的库    查看 $ORACLE_BASE/admin/和$ORACLE_BASE/oradata 2. 运行dbca 3. 选择新建库--General Purpose(通用库)模版--Global Database Name:库名.域名,可以只使用 库名--SID区分大小写------数据路径选择,模版默认的是$ORACLE_BASE/oradata/dababase--备份数据的路径--内存分配(SGA专用内存,事务处理为主:PGA系统内存,数据为主)|S

  • Golang中如何对MySQL进行操作详解

    前言 Golang官方并没有提供数据库驱动,但通过database/sql/driver包来提供了实现驱动的标准接口.可以在Github上找到很多开源的驱动. 其中go-sql-driver/mysql是一个比较推荐的驱动,其完全支持database/sql接口. 使用这个驱动, 在项目里import进: import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 在正式使用database/sql包之前

  • MySQL操作之JSON数据类型操作详解

    上一篇文章我们介绍了mysql数据存储过程参数实例详解,今天我们看看MySQL操作之JSON数据类型的相关内容. 概述 mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点.但mysql毕竟是关系型数据库,在处理json这种非结构化的数据时,还是比较别扭的. 创建一个JSON字段的表 首先先创建一个表,这个表包含一个json格式的字段: CREATE TABLE table_name ( id INT NOT NULL

  • Python读写JSON文件的操作详解

    目录 JSON JSON 起源 JSON 样例 Python 原生支持 JSON 序列化 JSON 简单的序列化示例 JSON 反序列化 简单的反序列化示例 应用案例 编码和解码 JSON JSON 起源 JSON 全称 JavaScript Object Notation .是处理对象文字语法的 JavaScript 编程语言的一个子集.JSON 早已成为与语言无关的语言,并作为自己的标准存在. JSON 样例 { "data":[ { "id": "1

  • MongoDB中的push操作详解(将文档插入到数组)

    目录 1. 概述 2. 数据库初始化 3. 使用 Mongo Query 进行推送操作 4. 使用Java驱动代码进行推送操作 4.1. 使用 DBObject 4.2. 使用 BSON 文档 5. 使用 addToSet操作符 5.1. 使用addToSet运算符的 Shell 查询 5.2. 使用addToSet运算符的 Java 驱动程序 6. 结论 总结 1. 概述 在本教程中,我们将介绍如何在MongoDB中将文档插入到数组中.此外,我们将看到 $push 和 $addToset 运算

随机推荐