求助?C#怎么将字符串 转成json 数组?

zzz185 2017-04-21 12:04:05
我点击设置参数之后,弹出Form2 在Form2中填写数据,然后点击确定的时候讲数据存到一个 类中 ,然后将这个对象转成json数组要怎么弄????最后转换完成之后怎么将json数组传到Form1中?? 最后转成这种效果!
...全文
4100 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_peng_yl 2017-04-22
  • 打赏
  • 举报
回复
1-我用vs2010, net4.0框架,看看你是不是,2-还有在项目属性里有个目标框架,看看你是不是选择了带client字样的框架了,把它换了,3-再不就是可能dll引用错了
wang_peng_yl 2017-04-21
  • 打赏
  • 举报
回复
列表中的类属性,我没有写全,你自己加吧
wang_peng_yl 2017-04-21
  • 打赏
  • 举报
回复
public class JsonTools
    {
        // 从一个对象信息生成Json串
        public static string ObjectToJson(object obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            MemoryStream stream = new MemoryStream();
            serializer.WriteObject(stream, obj);
            byte[] dataBytes = new byte[stream.Length];
            stream.Position = 0;
            stream.Read(dataBytes, 0, (int)stream.Length);
            return Encoding.UTF8.GetString(dataBytes);
        }
        // 从一个Json串生成对象信息
        public static object JsonToObject(string jsonString, object obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
            return serializer.ReadObject(mStream);
        }
    }

public class Info
    {        
        private string version = "";
        [DataMember(Name = "version")]
        public string Version
        {
            get { return version; }
            set { version = value; }
        }

        private string code = "";
         [DataMember(Name = "code")]
        public string Code
        {
            get { return code; }
            set { code = value; }
        }

         private List<Obj> list = new List<Obj>();

         public List<Obj> files
         {
             get { return list; }
             set { list = value; }
         }
    }
 public class Obj
    {
        private string name = "";

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        private int flag = 0;
        public int Flag
        {
            get { return flag; }
            set { flag = value; }
        }
    }

应用: 在Form2中添加一个GetJson属性 public string GetJSON { get { Info obj = new Info(); obj.Code = "afdafdsfsdf"; obj.Version = "1.0.0.1"; Obj o = new Obj(); o.Flag = 0; o.Name = "网络建设"; obj.files.Add(o); string json = JsonTools.ObjectToJson(obj); return json; } } 然后在Form2的关闭事中处理 private void Form1_Load(object sender, EventArgs e) { Form2 frm = new Form2(); frm.FormClosed += new FormClosedEventHandler(frm_FormClosed); } private void frm_FormClosed(object sender, FormClosedEventArgs e) { Form2 frm = ( Form2)sender; string json = frm.GetJSON; }
stherix 2017-04-21
  • 打赏
  • 举报
回复
根据Form2的数据 你自己写一个实体类 保存的时候生成实例并写入数据 然后调用json库的Serialize方法就能序列化成json字符串了 比如.net自带的 需要引用 System.Web.Extensions.dll 然后 using System.Web.Script.Serialization; var jsonStr = new JavaScriptSerializer().Serialize(instance);
zzz185 2017-04-21
  • 打赏
  • 举报
回复
最好上代码!!! 麻烦各位了!!
zzz185 2017-04-21
  • 打赏
  • 举报
回复
引用 8 楼 wang_peng_yl 的回复:
[quote=引用 5 楼 zzz185 的回复:]
[quote=引用 3 楼 wang_peng_yl 的回复:]
public class JsonTools
{
// 从一个对象信息生成Json串
public static string ObjectToJson(object obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
MemoryStream stream = new MemoryStream();
serializer.WriteObject(stream, obj);
byte[] dataBytes = new byte[stream.Length];
stream.Position = 0;
stream.Read(dataBytes, 0, (int)stream.Length);
return Encoding.UTF8.GetString(dataBytes);
}
// 从一个Json串生成对象信息
public static object JsonToObject(string jsonString, object obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
return serializer.ReadObject(mStream);
}
}

public class Info
{
private string version = "";
[DataMember(Name = "version")]
public string Version
{
get { return version; }
set { version = value; }
}

private string code = "";
[DataMember(Name = "code")]
public string Code
{
get { return code; }
set { code = value; }
}

private List<Obj> list = new List<Obj>();

public List<Obj> files
{
get { return list; }
set { list = value; }
}
}
public class Obj
{
private string name = "";

public string Name
{
get { return name; }
set { name = value; }
}

private int flag = 0;
public int Flag
{
get { return flag; }
set { flag = value; }
}
}



应用:
在Form2中添加一个GetJson属性
public string GetJSON
{
get
{
Info obj = new Info();
obj.Code = "afdafdsfsdf";
obj.Version = "1.0.0.1";

Obj o = new Obj();
o.Flag = 0;
o.Name = "网络建设";
obj.files.Add(o);
string json = JsonTools.ObjectToJson(obj);
return json;
}

}
然后在Form2的关闭事中处理
private void Form1_Load(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.FormClosed += new FormClosedEventHandler(frm_FormClosed);
}
private void frm_FormClosed(object sender, FormClosedEventArgs e)
{
Form2 frm = ( Form2)sender;
string json = frm.GetJSON;
}

能把引用的命名空间给我贴一下吗

[/quote]

using System.Runtime.Serialization.Json;
using System.IO;[/quote]

为啥这几个地方报错,该引用的都引用了?
wang_peng_yl 2017-04-21
  • 打赏
  • 举报
回复
引用 5 楼 zzz185 的回复:
[quote=引用 3 楼 wang_peng_yl 的回复:]
public class JsonTools
    {
        // 从一个对象信息生成Json串
        public static string ObjectToJson(object obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            MemoryStream stream = new MemoryStream();
            serializer.WriteObject(stream, obj);
            byte[] dataBytes = new byte[stream.Length];
            stream.Position = 0;
            stream.Read(dataBytes, 0, (int)stream.Length);
            return Encoding.UTF8.GetString(dataBytes);
        }
        // 从一个Json串生成对象信息
        public static object JsonToObject(string jsonString, object obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
            return serializer.ReadObject(mStream);
        }
    }

public class Info
    {        
        private string version = "";
        [DataMember(Name = "version")]
        public string Version
        {
            get { return version; }
            set { version = value; }
        }

        private string code = "";
         [DataMember(Name = "code")]
        public string Code
        {
            get { return code; }
            set { code = value; }
        }

         private List<Obj> list = new List<Obj>();

         public List<Obj> files
         {
             get { return list; }
             set { list = value; }
         }
    }
 public class Obj
    {
        private string name = "";

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        private int flag = 0;
        public int Flag
        {
            get { return flag; }
            set { flag = value; }
        }
    }

应用: 在Form2中添加一个GetJson属性 public string GetJSON { get { Info obj = new Info(); obj.Code = "afdafdsfsdf"; obj.Version = "1.0.0.1"; Obj o = new Obj(); o.Flag = 0; o.Name = "网络建设"; obj.files.Add(o); string json = JsonTools.ObjectToJson(obj); return json; } } 然后在Form2的关闭事中处理 private void Form1_Load(object sender, EventArgs e) { Form2 frm = new Form2(); frm.FormClosed += new FormClosedEventHandler(frm_FormClosed); } private void frm_FormClosed(object sender, FormClosedEventArgs e) { Form2 frm = ( Form2)sender; string json = frm.GetJSON; }
能把引用的命名空间给我贴一下吗 [/quote] using System.Runtime.Serialization.Json; using System.IO;
正怒月神 2017-04-21
  • 打赏
  • 举报
回复
转来转去,不是newtonsoft就能搞定吗?
zzz185 2017-04-21
  • 打赏
  • 举报
回复
引用 3 楼 wang_peng_yl 的回复:
public class JsonTools
    {
        // 从一个对象信息生成Json串
        public static string ObjectToJson(object obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            MemoryStream stream = new MemoryStream();
            serializer.WriteObject(stream, obj);
            byte[] dataBytes = new byte[stream.Length];
            stream.Position = 0;
            stream.Read(dataBytes, 0, (int)stream.Length);
            return Encoding.UTF8.GetString(dataBytes);
        }
        // 从一个Json串生成对象信息
        public static object JsonToObject(string jsonString, object obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
            return serializer.ReadObject(mStream);
        }
    }

public class Info
    {        
        private string version = "";
        [DataMember(Name = "version")]
        public string Version
        {
            get { return version; }
            set { version = value; }
        }

        private string code = "";
         [DataMember(Name = "code")]
        public string Code
        {
            get { return code; }
            set { code = value; }
        }

         private List<Obj> list = new List<Obj>();

         public List<Obj> files
         {
             get { return list; }
             set { list = value; }
         }
    }
 public class Obj
    {
        private string name = "";

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        private int flag = 0;
        public int Flag
        {
            get { return flag; }
            set { flag = value; }
        }
    }

应用: 在Form2中添加一个GetJson属性 public string GetJSON { get { Info obj = new Info(); obj.Code = "afdafdsfsdf"; obj.Version = "1.0.0.1"; Obj o = new Obj(); o.Flag = 0; o.Name = "网络建设"; obj.files.Add(o); string json = JsonTools.ObjectToJson(obj); return json; } } 然后在Form2的关闭事中处理 private void Form1_Load(object sender, EventArgs e) { Form2 frm = new Form2(); frm.FormClosed += new FormClosedEventHandler(frm_FormClosed); } private void frm_FormClosed(object sender, FormClosedEventArgs e) { Form2 frm = ( Form2)sender; string json = frm.GetJSON; }
能把引用的命名空间给我贴一下吗

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧