GVKun编程网logo

Json.net[v3.5]对对象和JSON字符串的使用(json对象与json字符串)

167

在本文中,您将会了解到关于Json.net[v3.5]对对象和JSON字符串的使用的新资讯,同时我们还将为您解释json对象与json字符串的相关在本文中,我们将带你探索Json.net[v3.5]对

在本文中,您将会了解到关于Json.net[v3.5]对对象和JSON字符串的使用的新资讯,同时我们还将为您解释json对象与json字符串的相关在本文中,我们将带你探索Json.net[v3.5]对对象和JSON字符串的使用的奥秘,分析json对象与json字符串的特点,并给出一些关于.net 使用 Newtonsoft.Json 输出树状 json字符串、C#对象转JSON字符串和JSON字符串转对象、fastjson--Gson生成Json字符串,并且解析Json字符串生成对象、fastjson对含有数组的json字符串的转换为json对象的实用技巧。

本文目录一览:

Json.net[v3.5]对对象和JSON字符串的使用(json对象与json字符串)

Json.net[v3.5]对对象和JSON字符串的使用(json对象与json字符串)

Json.net[v3.5]对对象和JSON字符串的使用

简介:Json.net[v3.5]对对象和JSON字符串的使用

本文将介绍一个非常简单实用的例子,共享学习下

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以控制台应用程序为例子,我们需要在Program.cs中添加如下代码:

class Program { /// <summary> /// Json.net[v3.5]使用 /// </summary> /// <author>PengZhen</author> /// <time>2013-11-5 21:29:27</time> /// <param name="args"></param> private static void Main(string[] args) { ApkList objApkList1 = new ApkList(); objApkList1.ApkName = "ApkName123"; objApkList1.version = "version321"; string strjson1 = JsonConvert.SerializeObject(objApkList1); Console.WriteLine(strjson1); Console.WriteLine("<-------------------------O(∩_∩)O------------------------->"); string strDeJson1 = "{\"ApkName\":\"ApkName123\",\"version\":\"version321\"}"; ApkList objApkList2 = new ApkList(); objApkList2 = (ApkList) JsonConvert.DeserializeObject(strDeJson1,typeof (ApkList)); Console.WriteLine("objApkList.ApkName:" + objApkList2.ApkName); Console.WriteLine("objApkList.version:" + objApkList2.version); Console.WriteLine("<-------------------------O(∩_∩)O------------------------->"); List<ApkList> listApkList1 = new List<ApkList>(); ApkList objApkList3 = new ApkList(); objApkList3.ApkName = "1ApkName123"; objApkList3.version = "1version321"; listApkList1.Add(objApkList3); ApkList objApkList4 = new ApkList(); objApkList4.ApkName = "2ApkName123"; objApkList4.version = "2version321"; listApkList1.Add(objApkList4); string strjson = JsonConvert.SerializeObject(listApkList1); Console.WriteLine(strjson); Console.WriteLine("<-------------------------O(∩_∩)O------------------------->"); string strDeJson = "[{\"ApkName\":\"1\",\"version\":\"游戏\"},{\"ApkName\":\"2\",\"version\":\"书籍\"},{\"ApkName\":\"20\",\"version\":\"工具\"}]"; List<ApkList> listApkList = (List<ApkList>) JsonConvert.DeserializeObject(strDeJson,typeof (List<ApkList>)); ApkList objApkList5 = listApkList[0]; Console.WriteLine("objApkList.ApkName:" + objApkList5.ApkName); Console.WriteLine("objApkList.version:" + objApkList5.version); ApkList objApkList6 = listApkList[1]; Console.WriteLine("objApkList.ApkName:" + objApkList6.ApkName); Console.WriteLine("objApkList.version:" + objApkList6.version); ApkList objApkList7 = listApkList[2]; Console.WriteLine("objApkList.ApkName:" + objApkList7.ApkName); Console.WriteLine("objApkList.version:" + objApkList7.version); Console.WriteLine("<-------------------------O(∩_∩)O------------------------->"); Console.ReadLine(); } }

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

新建实体类:

public class ApkList { /// <summary> /// 包名 /// </summary> private string _strApkName; /// <summary> /// 版本号 /// </summary> private string _strAppVersion; /// <summary> /// 包名 /// </summary> public string ApkName { get { return _strApkName; } set { _strApkName = value; } } /// <summary> /// 版本号 /// </summary> public string version { get { return _strAppVersion; } set { _strAppVersion = value; } } /// <summary> /// 构造函数 /// </summary> public ApkList() { _strApkName = string.Empty; _strAppVersion = string.Empty; } }

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

程序运行效果图:

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Newtonsoft.Json.Net35下载地址

.net 使用 Newtonsoft.Json 输出树状 json字符串

.net 使用 Newtonsoft.Json 输出树状 json字符串

测试环境:.net FrameWork 4.0

操作系统:window Server 2008 R2

Newtonsoft.Json 下载地址:http://json.codeplex.com/

1、解压缩下载文件夹:Json50r8

2、引入Json50r8/Bin 下的 相对应.net版本的dll文件 到项目中


执行以下代码:


using System;
using System.Collections.Generic;
using Newtonsoft.Json;

public partial class _Default : System.Web.UI.Page
{
    private string jsonString = @"[
        { 'id': '1','text': '电脑整机','parentid': '0','children': [
    { 'id': '2','text': '笔记本','parentid': '1','children': [
{ 'id': '31','text': 'SONY','parentid': '2','children': [] },{ 'id': '23','text': 'LENOVO',{ 'id': '25','text': 'IBM',{ 'id': '26','text': '宏基',{ 'id': '27','text': '联想',{ 'id': '28','text': '联想2','children': [] }
   ]
    },{ 'id': '3','text': '上网本',{ 'id': '4','text': '平板电脑',{ 'id': '5','text': '台式机',{ 'id': '6','text': '服务器','children': [] }
]
        },{ 'id': '7','text': '电脑配件','children': [
{ 'id': '8','text': 'cpu','parentid': '7',{ 'id': '9','text': '主板',{ 'id': '10','text': '显卡',{ 'id': '11','text': '硬盘',{ 'id': '12','text': '内存',{ 'id': '13','text': '机箱',{ 'id': '14','text': '电源',{ 'id': '15','text': '显示器',{ 'id': '16','text': '刻录机/光驱',{ 'id': '17','text': '声卡',{ 'id': '18','text': '扩展卡','children': [] }
]
   },{ 'id': '32','text': '手机','children': [
  {
      'id': '33','text': '诺基亚','parentid': '32','children': [
                                  { 'id': '34','text': '华为','children': [] }
                                  ]
  },{ 'id': '34','text': '三星','text': '小米','text': '苹果','children': [] }
                                                                 	]
    },'text': '篮球','parentId': '1','children': [] }
];";

    protected void Page_Load(object sender,EventArgs e)
    {
        treeNode rootNode = new treeNode();
        rootNode.id="1";
        rootNode.text="电脑整机";
        rootNode.parentid="0";
        
        treeNode childNode1 = new treeNode();
        childNode1.id="2";
        childNode1.text="笔记本";
        childNode1.parentid="1";

        treeNode childNode2 = new treeNode();
        childNode2.id="3";
        childNode2.text="SONY";
        childNode2.parentid="1";

        if (rootNode.children == null)
            rootNode.children = new List<treeNode>();

        rootNode.children.Add(childNode1);
        rootNode.children.Add(childNode2);

        string json = JsonConvert.SerializeObject(rootNode,Formatting.Indented);
    }

    /// <summary>
    /// 树结构(根据js插件定义的数据结构)
    /// </summary>
    public class treeNode
    {
        private string _id;

        private string _text;

        private string _parentid;

        private List<treeNode> _children;

        public string id
        {
            get { return _id; }
            set { _id = value; }
        }
        public string text
        {
            get { return _text; }
            set { _text = value; }
        }
        public string parentid
        {
            get { return _parentid; }
            set { _parentid = value; }
        }
        public List<treeNode> children
        {
            get { return _children; }
            set { _children = value; }
        }
    }
}

C#对象转JSON字符串和JSON字符串转对象

C#对象转JSON字符串和JSON字符串转对象

C#对象转JSON字符串和JSON字符串转对象
 
/* 创建者:菜刀居士的博客
 * 创建日期: 2014年09月03号
 * 功能: Json操作
 *
  */
 
namespace Net.String.ConsoleApplication
 {
    using System;
    using System.Data;
    using System.Collections;
    using System.ComponentModel;
    using System.Collections.Generic;
    using System.Web.Script.Serialization;
  
 
    public class JsonHelper
    {
        /// <summary>
        /// 把json字符串转成对象
        /// </summary>
        /// <typeparam name="T">对象</typeparam>
        /// <param name="data">json字符串</param>
        public static T Deserialize<T>(string data)
        {
            System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
            return json.Deserialize<T>(data);
        }
 
        /// <summary>
        /// 把对象转成json字符串
        /// </summary>
        /// <param name="o">对象</param>
        /// <returns>json字符串</returns>
        public static string Serialize(object o)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
            json.Serialize(o, sb);
            return sb.ToString();
        }
 
        /// <summary>
        /// 把DataTable对象转成json字符串
        /// </summary>
        public string ToJson(DataTable dt)
        {
            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            ArrayList arrayList = new ArrayList();
            foreach (DataRow dataRow in dt.Rows)
            {
                Dictionary<string, object> dictionary = new Dictionary<string, object>();
                foreach (DataColumn dataColumn in dt.Columns)
                {
                    dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName]);
                }
                arrayList.Add(dictionary);
            }
            return javaScriptSerializer.Serialize(arrayList);
        }
    }
 
    public static class EnumerableExtension
    {
        /// <summary>
        /// 集合添加一个对象
        /// </summary>
        public static IEnumerable<T> Add<T>(this IEnumerable<T> e, T value)
        {
            foreach (var cur in e)
            { yield return cur; }
            yield return value;
        }
 
        /// <summary>
        /// 把集合转成DataTable
        /// </summary>
        public static DataTable ConvertToDataTable<T>(this IEnumerable<T> enumerable)
        {
            var dataTable = new DataTable();
            foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(T)))
            {
                dataTable.Columns.Add(pd.Name, pd.PropertyType);
            }
            foreach (T item in enumerable)
            {
                var Row = dataTable.NewRow();
 
                foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
                {
                    Row[dp.Name] = dp.GetValue(item);
                }
                dataTable.Rows.Add(Row);
            }
            return dataTable;
        }
    }
 }

fastjson--Gson生成Json字符串,并且解析Json字符串生成对象

fastjson--Gson生成Json字符串,并且解析Json字符串生成对象

json.jar地址下载 点击打开链接

+++++++++++++++++++++++++++++先看fastjson的使用方法++++++++++++++++++++++++++++++++

Student

package com.example.fastjson;
public class Student {  

    private String name;  

    private int age;  
    /**
     * 默认的构造方法必须要写,不然是无法解析的
     */
    public Student() {  

    }  
      
    public Student(String name,int age){  
        this.name = name;  
        this.age = age;  
    }  

    public int getAge() {  
        return age;  
    }  

    public void setAge(int age) {  
        this.age = age;  
    }  

    public String getName() {  
        return name;  
    }  

    public void setName(String name) {  
        this.name = name;  
    }  

    @Override
    public String toString() {
    	return "Student [name=" + name + ",age=" + age + "]";  
    }
}  

Grade

package com.example.fastjson;
import java.util.ArrayList;
import java.util.List;

public class Grade {  

    private String gradeName;  
      
    private List<Student> students = new ArrayList<Student>();  

    public Grade() {  

    }  
      
    public Grade(String gradeName) {  
        this.gradeName = gradeName;  
    }  

    public String getGradeName() {  
        return gradeName;  
    }  

    public void setGradeName(String gradeName) {  
        this.gradeName = gradeName;  
    }  

    public List<Student> getStudents() {  
        return students;  
    }  

    public void setStudents(List<Student> students) {  
        this.students = students;  
    }  
      
}  


MainActivity
package com.example.fastjson;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		/**
		 * 1、1输出javaBean的json格式
		 */
		Student student = new Student("dandy",27);  
		String jsonStudent1 = JSON.toJSONString(student);  
		String jsonStudent2 = JSON.toJSONString(student,true);  
		
		//jsonStudent:{"age":27,"name":"dandy"}
		Log.i("TAG","jsonStudent1 standard:"+jsonStudent1);
		Log.i("TAG","jsonStudent2 true:"+jsonStudent2);
		/**
		 * 1、2输出javaBean的特定属性json格式
		 * new SimplePropertyPreFilter(实体类.class,"字段一","字段二"); 
		 */
		SimplePropertyPreFilter filter = new SimplePropertyPreFilter(Student.class,"name");  
		String jsonStudent = JSON.toJSONString(student,filter);  
		Log.i("TAG","jsonStudent filter:"+jsonStudent);
		
		/**
		 * 1、3输出复杂的javaBean(带集合的)
		 */
		Grade grade = new Grade("高一");  
		grade.getStudents().add(new Student("dandy",27));  
		grade.getStudents().add(new Student("Tabolt",28));  
		String jsonGrade = JSON.toJSONString(grade);  
		Log.i("TAG","jsonGrade:"+jsonGrade);
		
		/**
		 * 2、1Json生成javaBean对象实例
		 */
		String json = JSON.toJSONString(new Student("Tabolt",28));  
		Student studentBean = JSON.parSEObject(json,Student.class);  
		Log.i("TAG","studentBean:"+studentBean);
		
		/**
		 * 2、2Json生成javaBean对象实例 集合
		 */
	    List<Student> students = new ArrayList<Student>();  
	    for(int i = 0;i < 5;i++){  
	        Student studentFor = new Student("dandy_"+i,26+i);  
	        students.add(studentFor);  
	    }  
	    String jsonFor = JSON.toJSONString(students);  
	    List<Student> stus1 = JSON.parseArray(jsonFor,Student.class);
	    List<Student> stus2 = JSON.parSEObject(jsonFor,new TypeReference<List<Student>>(){});  
	    for(Student stu:stus1){  
	    	Log.i("TAG","studentBean:"+stu.toString());
	    }  
	    for(Student stu:stus2){  
	    	Log.i("TAG","studentBean:"+stu.toString());
	    }  
	}
}


log输出如下。。。


+++++++++++++++++++++++++++++先看Gson的使用方法++++++++++++++++++++++++++++++++

package com.example.gsondemo;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import com.google.gson.Gson;
import com.google.gson.reflect.Typetoken;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		/**
		 * 1、1gson解析对象
		 */
		Gson gson = new Gson();
		Student student = new Student("dandy",27);
		String stuStr = gson.toJson(student);
		Log.i("TAG","str:" + stuStr);

		/**
		 * 1、2gson解析数组对象
		 */
		Grade grade = new Grade("高一");
		grade.getStudents().add(new Student("dandy",27));
		grade.getStudents().add(new Student("Tabolt",28));
		String str = gson.toJson(grade);
		Log.i("TAG","str:" + str);

		/**
		 * 
		 * 2、1 gson解析字符串为javaBean对象
		 */
		Student fromJson2Stu = gson.fromJson(stuStr,Student.class);
		Log.i("TAG","fromJson2Stu-->" + fromJson2Stu.toString());

		/**
		 * 2、2gson解析字符串为javaBean对象集合
		 */
		List<Student> students = new ArrayList<Student>();
		for (int i = 0; i < 5; i++) {
			Student studentFor = new Student("dandy_" + i,26 + i);
			students.add(studentFor);
		}
		String jsonFor = gson.toJson(students);

		List<Student> fromJson2StuArr = gson.fromJson(jsonFor,new Typetoken<List<Student>>() {
				}.getType());
		for (int i = 0; i < fromJson2StuArr.size(); i++) {
			Student student2 = fromJson2StuArr.get(i);
			Log.i("TAG","student2-->" + student2.toString());

		}

	}

}

fastjson对含有数组的json字符串的转换为json对象

fastjson对含有数组的json字符串的转换为json对象

请问我用fastjson怎么转换 

String json = "{\"thumb\":\"\",\"photo\":\"[{\"url\":\"/uppath/200711912453162_227.jpg\",\"alt\":\"200711912453162_227\"}]\"}";

这样一组json字符串

今天关于Json.net[v3.5]对对象和JSON字符串的使用json对象与json字符串的分享就到这里,希望大家有所收获,若想了解更多关于.net 使用 Newtonsoft.Json 输出树状 json字符串、C#对象转JSON字符串和JSON字符串转对象、fastjson--Gson生成Json字符串,并且解析Json字符串生成对象、fastjson对含有数组的json字符串的转换为json对象等相关知识,可以在本站进行查询。

本文标签: