将json格式的string转化为对象

(1)

       private void button1_Click(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("{");
            sb.Append("\"search\": null,");
            sb.Append("\"totalCount\": 2,");
            sb.Append("\"list\": [");
            sb.Append("{");
            sb.Append("\"id\": \"DE\",");
            sb.Append("\"name\": \"Herz\"");
            sb.Append("},");
            sb.Append("{");
            sb.Append("\"id\": \"E_0\",");
            sb.Append("\"name\": \"Sciences\"");
            sb.Append("}");
            sb.Append("],");
            sb.Append("\"indexId\": null,");
            sb.Append("\"success\": true");
            sb.Append("}");
            //将json对象解析成一个类,注意名称和数据类型必须相符。简便方法:VS的“编辑”-->“选择性粘贴”-->“将JSON粘贴为类”,系统自动生成

            #region 方法一:Newtonsoft.Json.JsonConvert.DeserializeObject<>
            ClassObject co = Newtonsoft.Json.JsonConvert.DeserializeObject<ClassObject>(sb.ToString());
            MessageBox.Show(co.list.Length.ToString());//输出2
            #endregion

            #region 方法二:System.Runtime.Serialization.Json.DataContractJsonSerializer
            //存储流
            System.IO.MemoryStream mstream = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(sb.ToString()));
            //指定反序列化对象
            System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(ClassObject));
            //进行解析
            ClassObject cccoo = (ClassObject)serializer.ReadObject(mstream);
            MessageBox.Show(cccoo.list.Length.ToString());//输出
            #endregion
        }

        //电脑生成的:根据json格式的string解析的对象ClassObject和List
        public class ClassObject
        {
            public object search { get; set; }
            public int totalCount { get; set; }
            public List[] list { get; set; }
            public object indexId { get; set; }
            public bool success { get; set; }
        }

        public class List
        {
            public string id { get; set; }
            public string name { get; set; }
        }

(2)但是,电脑自动生成对象,在解析时并不全是能解析成功的。如下

        private void button1_Click(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("[");
            sb.Append("{");
            sb.Append("\"code\": \"BL\",");
            sb.Append("\"title\": \"生物\"");
            sb.Append("},");
            sb.Append(" {");
            sb.Append("\"code\": \"CP\",");
            sb.Append("\"title\": \"外文\"");
            sb.Append("},");
            sb.Append("{");
            sb.Append("\"code\": \"GP\",");
            sb.Append("\"title\": \"计算\"");
            sb.Append("}");
            sb.Append("]");

             List<CodeTitle> ctlist = Newtonsoft.Json.JsonConvert.DeserializeObject<List<CodeTitle>>(sb.ToString());
             MessageBox.Show(ctlist.Count.ToString());//输出3

            //此处会报错:电脑自动生成的对象并不全是对的。
            Rootobject r = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(sb.ToString());

        }

        //自己手动写的:根据json格式的string解析的对象ClassObject和List
        class CodeTitle
        {
            public string code { get; set; }
            public string title { get; set; }
        }

        //电脑自动生成的Rootobject和Class1
        public class Rootobject
        {
            public Class1[] Property1 { get; set; }
        }

        public class Class1
        {
            public string code { get; set; }
            public string title { get; set; }
        }

完!

时间: 2024-10-10 04:23:58

将json格式的string转化为对象的相关文章

Map对象转换成Json格式的String字符串

1 //action处理页面发来的String,put到map转换成Json格式的String字符串 2 @RequestMapping("/seleteOaOrder") 3 @ResponseBody 4 public Object seleteOaOrder(String param){//param = "小明"; 5 System.out.println("+++++++++++++++++param:"+param); 6 if(pa

JSon_零基础_006_将JSon格式的字符串转换为Java对象

需求: 将JSon格式的字符串转换为Java对象. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key)方法取得key对应的value部分(字符串). 通过getJSONObject(key)可以取得一个JSONObject对象. 通过getJSONArray(key)可以得到一个JSONArray对象. 需要导入的jar包: 编写po(bean)类: package com.west.webcou

从一个复杂的json格式的String内获取某key的值

如题,如何简单的从一个复杂的String格式内获取某个key的值. 例如:从下面String下取到status的值. {"response":{"info":{"code":100000},"content":{"contractinfo":{"fsdid":"14646743396","title":"邮件titty",&qu

(转)json格式脚本转成对象

在测试杰夫接口编写脚本的时候,一般研发提供的入参是json格式的数据,但是调用接口的方法的时候需要传入对象,杰夫的jar包中本身带有将json转换成对象的功能,这样就不用我们自己将json转换为对象了,直接用杰夫自带的就可以了,希望该功能可以节省一定的工作量. 具体例子: //需要传入的json格式的数据 String paramFreightRequestjson="{\"pin\":\"test\",\"applyDate\":14

JSon_零基础_005_将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面

将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写:po(bean)代码: package com.west.webcourse.po; /** * 第01步:编写bean类, * 下一步com.west.webcourse.servlet.JavaBeanToJOSNString.java */ public class PersonInfoPo { private String name; private int age; private St

xml和JSON格式相互转换的Java实现

依赖的包: json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar xom-1.2.1.jar commons-lang-2.1.jar commons-io-1.3.2.jar jaxen-1.1.jar 输入xml文件,输出JSON对象 package com.cash.util; import java.io.IOException; import java.io.InputStream; import org.apache.commons.io.IOUtils;

struts2返回json格式的数据

描述:当前端使用ajax发送请求到action时,如果需要返回json格式的数据,如对象集合.具体做法如下: 前端代码: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"

Asp.net C# 使用Newtonsoft.Json 实现DataTable转Json格式数据

1.这里下载:http://www.newtonsoft.com/products/json/ 安装:    1.解压下载文件,得到Newtonsoft.Json.dll    2.在项目中添加引用 2.引入命名空间 using Newtonsoft.Json; using Newtonsoft.Json.Converters; 3.把datatable转换成json格式 public string GetAllCategory() { string result = ""; Data

转!!JavaBean,List,Map转成json格式

public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void