foreach (var row in rows){根据row.id得到age追加到row里面},最终rows效果:[{"id":"1" ,"Name": "张三","age":"25"},{"id":"2" ,"Name": "李四","age":"35"}]
14 个解决方案
#1
你这是json,和list有什么关系,就算是从json转换,你这个顶多也是往hasttable/dictionary里添加数据
比如row["age"] = "25";这样的
比如row["age"] = "25";这样的
#2
反序列化json字符串,然后for循环赋值,再反序列化
如果在js里面这个操作就简单了,直接循环赋值
如果在js里面这个操作就简单了,直接循环赋值
#3
foreach循环,不能改变循环体的值吧.
最好用for
最好用for
#4
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"}]";
Person[] persons = JsonConvert.DeserializeObject<Person[]>(jsonString);
persons.FirstOrDefault(p => p.Name == "张三").age = "25";
persons.FirstOrDefault(p => p.Name == "李四").age = "35";
foreach (Person person in persons)
{
Console.WriteLine(string.Join("--",person.id,person.Name,person.age));
}
}
}
public class Person
{
public string id { get; set; }
public string Name { get; set; }
public string age { get; set; }
}
}
#5
能有更简单的方法吗 例如:List<T>.Add 方法
#6
虽然是json数据 ,转换到list里面操作的
#7
这是在后台操作的,试过List<T>.Add、List<T>.Insert 方法,但是没达到想要的效果
#8
给你一个扯淡的不建议做法
Dictionary<string, string> dic = new Dictionary<string, string>()
{
{"1","\"25\""},
{"2","\"35\""}
};
string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"},{\"id\":\"3\" ,\"Name\": \"王五\"}]";
string patten = @"""id"":""([^""]*)"".*?(?=})";
Console.WriteLine(Regex.Replace(jsonString, patten, m =>
{
string v;
if (dic.TryGetValue(m.Groups[1].Value, out v))
{
return string.Format("{0},\"Age\": {1}", m.Value, v);
}
return m.Value;
}));
#9
修改值可以,例如row.name的值都可以改,就是不知道怎么在后面追加
#10
追加的值不止一个,有没有什么方法得到里面的位置索引,直接插入数据
#11
后面追加什么就看你了啊,在if判断里面已经找到那一段json了,你可以认为这个就是你想要的索引位置
#12
先转成list,再追加,追加完再转回json啊
不要老企图直接在json里加数据,那就是在操作字符串了,麻烦死
不要老企图直接在json里加数据,那就是在操作字符串了,麻烦死
#13
是转成list操作的,但是不知道怎么追加在指定位置
#14
按你的做很麻烦,我是想找个比较简单的方法直接插入数据,例如List<T>.Add(new {age = "25“ });这种比较快捷直接的
#1
你这是json,和list有什么关系,就算是从json转换,你这个顶多也是往hasttable/dictionary里添加数据
比如row["age"] = "25";这样的
比如row["age"] = "25";这样的
#2
反序列化json字符串,然后for循环赋值,再反序列化
如果在js里面这个操作就简单了,直接循环赋值
如果在js里面这个操作就简单了,直接循环赋值
#3
foreach循环,不能改变循环体的值吧.
最好用for
最好用for
#4
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"}]";
Person[] persons = JsonConvert.DeserializeObject<Person[]>(jsonString);
persons.FirstOrDefault(p => p.Name == "张三").age = "25";
persons.FirstOrDefault(p => p.Name == "李四").age = "35";
foreach (Person person in persons)
{
Console.WriteLine(string.Join("--",person.id,person.Name,person.age));
}
}
}
public class Person
{
public string id { get; set; }
public string Name { get; set; }
public string age { get; set; }
}
}
#5
能有更简单的方法吗 例如:List<T>.Add 方法
#6
虽然是json数据 ,转换到list里面操作的
#7
这是在后台操作的,试过List<T>.Add、List<T>.Insert 方法,但是没达到想要的效果
#8
给你一个扯淡的不建议做法
Dictionary<string, string> dic = new Dictionary<string, string>()
{
{"1","\"25\""},
{"2","\"35\""}
};
string jsonString = "[{\"id\":\"1\" ,\"Name\": \"张三\"},{\"id\":\"2\" ,\"Name\": \"李四\"},{\"id\":\"3\" ,\"Name\": \"王五\"}]";
string patten = @"""id"":""([^""]*)"".*?(?=})";
Console.WriteLine(Regex.Replace(jsonString, patten, m =>
{
string v;
if (dic.TryGetValue(m.Groups[1].Value, out v))
{
return string.Format("{0},\"Age\": {1}", m.Value, v);
}
return m.Value;
}));
#9
修改值可以,例如row.name的值都可以改,就是不知道怎么在后面追加
#10
追加的值不止一个,有没有什么方法得到里面的位置索引,直接插入数据
#11
后面追加什么就看你了啊,在if判断里面已经找到那一段json了,你可以认为这个就是你想要的索引位置
#12
先转成list,再追加,追加完再转回json啊
不要老企图直接在json里加数据,那就是在操作字符串了,麻烦死
不要老企图直接在json里加数据,那就是在操作字符串了,麻烦死
#13
是转成list操作的,但是不知道怎么追加在指定位置
#14
按你的做很麻烦,我是想找个比较简单的方法直接插入数据,例如List<T>.Add(new {age = "25“ });这种比较快捷直接的