[C#] Newtonsoft.Json.dll解析json实例

Craze1995 Linux运维工程师  2015-09-29 04:28:40
我刚接触[C#] Newtonsoft.Json.dll解析json,看教程做但是不够详细,希望有人能帮帮我,我是把代码写完了,也没有错误,只是教程上没说怎么添加控件,我逐个拖进去,做后运行,但是程序没有应,无法运行,也没给任何提示,有人可以教教我吗?谢谢啦。
教程链接:Newtonsoft.Json.dll解析json实例 - PHP、C#/学习-356网站建设交流社区
http://bbs.356web.com/thread-322-1-1.html


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace JsonTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ReadTxt();
}

private void button1_Click(object sender, EventArgs e)
{
ReadJson();
}

List<User> UserList;
public void ReadJson()
{
string UsersInfo = textBox1.Text;
if (UsersInfo == "")
{
MessageBox.Show("没有找到需要解析的数据!");
return;
}
UserList = new List<User>();
JObject jsonObj = JObject.Parse(UsersInfo);
JArray UserJa = JArray.Parse(jsonObj["Users"].ToString());
for (int i = 0; i < UserJa.Count; i++)
{
User user = new User();

user.Username = UserJa[i]["Username"].ToString();
user.Stu_number = UserJa[i]["Stu_number"].ToString();
user.Ssd = UserJa[i]["ssd"].ToString();
user.Key = UserJa[i]["Key"].ToString();
user.AreaId = UserJa[i]["areaId"].ToString();
user.Number = UserJa[i]["number"].ToString();
UserList.Add(user);

ListViewItem lvi = new ListViewItem(user.Username);
lvi.SubItems.Add(user.Stu_number);
lvi.SubItems.Add(user.Ssd);
lvi.SubItems.Add(user.Key);
lvi.SubItems.Add(user.AreaId);
lvi.SubItems.Add(user.Number);

this.listView1.Items.Add(lvi);

}

label1.Text = UserList[0].Username + " " + UserList[0].Stu_number + " " + UserList[0].Ssd + " " + UserList[0].Key;//你想获取某一个值用这种方法显示
}

/// <summary>
/// 读取存放json数据的Txt文件
/// </summary>
public void ReadTxt()
{
string strLine;
string path = Application.StartupPath + "//UserInfo.txt";
if(!File.Exists(path))
{
MessageBox.Show("指定文件不存在!");
return;
}
FileStream fs = new FileStream(path, FileMode.Open);

StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding("gb2312"));
strLine = sr.ReadLine();
while (strLine != null)
{
textBox1.Text = textBox1.Text+strLine;
strLine = sr.ReadLine();
}
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JsonTest
{
class User
{
string username;
string stu_number;
string ssd;
string key;
string areaId;
string number;
public string Username
{
get { return username; }
set { username = value; }
}
public string Stu_number
{
get { return stu_number; }
set { stu_number = value; }
}
public string Ssd
{
get { return ssd; }
set { ssd = value; }
}
public string Key
{
get { return key; }
set { key = value; }
}
public string AreaId
{
get { return areaId; }
set { areaId = value; }
}
public string Number
{
get { return number; }
set { number = value; }
}
}
}
...全文
357 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
正怒月神 2015-10-14
查看你的designer.cs文件,看看按钮是否注册了
回复
没明白你后面两个事件想要干嘛
回复
ajianchina 2015-09-29
前面说的问题实现了吗? textView 和listView你想写出什么东西呢?
回复
Craze1995 2015-09-29
  private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            throw new System.NotImplementedException();
        }

        private void textBox1_TextChanged(object sender, System.EventArgs e)
        {
            throw new System.NotImplementedException();
        }

        #endregion
textView 和listView下不知该怎么写了,上面的代码中没有,我是初学者,好多东西都不明白,还请详细给我说一下。
回复
ajianchina 2015-09-29
楼主,你是出现异常无法运行了,还是按了按钮无反应? 你拖了控件是不错,但你的按钮确定是双击后生成的button1_Click事件吗?不会是直接将代码贴过来的吧?那样的话,按钮事件没注册当然没任何反应的。没注册的话注册一下看看。

public Form1()
{
	InitializeComponent();
	ReadTxt();
	//注册一下按钮事件
	button1.Click += button1_Click;
}
回复
这个,form上貌似也就一个设置了mutiply为true的输入框和一个按钮,还有一个显示用的label,位置随便你怎么拖动了啊
回复
相关推荐
发帖
分析与设计
创建于2007-09-28

1.3w+

社区成员

.NET技术 分析与设计
申请成为版主
帖子事件
创建了帖子
2015-09-29 04:28
社区公告
暂无公告