重工电子论坛
标题: Json相关的操作 [打印本页]
作者: 李维强-15级 时间: 2016-10-27 10:42
标题: Json相关的操作
本帖最后由 李维强-15级 于 2016-12-4 22:40 编辑
Json字符串查错的网址
http://jsonlint.com/
2楼 JS 添加json方法
作者: 李维强-15级 时间: 2016-12-4 22:38
比如现在有一条var jsonstr=“ [{'name':'a','value':1},{'name':'b','value':2}] ”;
然后将其变成json格式的 var json=eval('('+jsonstr+')');
现在我想直接对这个json数组进行操作向其中添加元素,有没有快捷的方法,还是说必须对上面的字符串进行操作再转成json对象
[JavaScript] syntaxhighlighter_viewsource syntaxhighlighter_copycode
//1、
var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]";
var jsonarray = eval('('+jsonstr+')');
var arr =
{
"name" : $('#names').val(),
"value" : $('#values').val()
}
jsonarray.push(arr);
//2、
var json={};// 定义一个json对象
json.array1=["2","4"];// 增加一个新属性,此属性是数组
json.array1[json.array1.length]='6';// 数组追加一个元素
alert(json.array1)
作者: 李维强-15级 时间: 2016-12-4 22:42
[C#] syntaxhighlighter_viewsource syntaxhighlighter_copycode
using System;
using Newtonsoft.Json.Linq;
namespace ChatPay
{
class JsonStudy
{
public void demo()
{
string jsonStr = "";//Json Str字符串
JToken json = JToken.Parse(jsonStr);//转化为JToken(JObject基类)
string xx = json.Value<string>("xx");//获取Json里xx键的值
JToken arr = json["arr"];//获取Json里的数组 {arr:[{yy:1,zz:2},{yy:3,zz:4}]}
foreach (JToken baseJ in arr)//遍历数组
{
int yy = baseJ.Value<int>("yy");
}
string yy1 = json["arr"][0].Value<string>("yy");//也可以酱紫,多层的获取
string yy2 = json["arr"][0]["yy"] != null ? json["arr"][0]["yy"].ToString() : "";//这个和上面句等价,不要直接ToString,容易报错
/*JToken 不能示例化,若要生成新的Json,使用Jobject*/
JObject newJson = new JObject();
newJson["aa"] = "xxxx";//输入键值,赋值时键不能重复调用,如newJson["aa"]["bb"]酱紫不行
JObject newJson2 = new JObject();
newJson2["cc"] = "vbbb";
newJson2["bb"]="dd";
newJson["dd"] = newJson2;//酱紫完成多层Json的生成
}
}
}
作者: 李维强-15级 时间: 2016-12-4 22:53
[C#] syntaxhighlighter_viewsource syntaxhighlighter_copycode
//2.1 数组用JArray加载
string jsonText = "[{\"a\":\"aaa\",\"b\":\"bbb\",\"c\":\"ccc\"},{\"a\":\"aa\",\"b\":\"bb\",\"c\":\"cc\"}]";
var mJObj = JArray.Parse(jsonText);
//需求,删除列表里的a节点的值为'aa'的项
IList<JToken> delList = new List<JToken>(); //存储需要删除的项
foreach (var ss in mJObj ) //查找某个字段与值
{
if(((JObject) ss)["a"]=="aa")
delList .add(ss);
}
foreach (var item in delList ) //移除mJObj 在delList 里的项
{
mJObj .remove(item);
}
//2.2 非数组用JObject加载 (这里主要以这个为例子)
string jsonText = "[{\"a\":\"aaa\",\"b\":\"bbb\",\"c\":\"ccc\"}]";
var mJObj = JObject.Parse(jsonText);
mJObj.Add() //新增,没试过
var v1=mJObj[a].ToString() //得到'aaa'的值
以上的例子可交互灵活使用
注意事项,JArray 只能用来查找索引的项的对象,找到对象需要转换为 JObject,再查找对应的属性值
其他写法补充
1、属性下嵌套json (非数组)遍历其包含的属性列表
var xx = ((mJObj["dim"])).Children().Values();
foreach (var item in xx)
{
var dimID = ((JObject) item)["id"];
}
作者: 李维强-15级 时间: 2016-12-4 23:44
什么是检索在C#中甚至可能不存在使用Json.NET的JSON值的最佳做法? 现在我正在处理一个JSON提供返回的JSON包含某些键/值对,一点也不。我已经(甚至可能是错误)来得到我的价值观(例如得到一个双):
if(null != jToken["width"])
width = double.Parse(jToken["width"].ToString());
else
width = 100;
欢迎光临 重工电子论坛 (http://cqutlab.cn/) |
Powered by Discuz! X3.1 |