我需要在Jtoken中实现一个更新值的函数:
public object SetValue(JToken token, string[] pos,string value)
基本上应该这样做:
token[pos[0]][pos[1]][pos[2]]....[pos[n]] = value;
我做了以下事情:
public object SetValue(JToken token, string[] pos,string value)
{
JToken Token = token;
foreach (string pos in position)
{
Token = Token[pos];
}
Token = value;
return token.ToString();
}
返回的字符串没有用val更新,你能指出我做错了什么或如何更好地实现这个功能?
感谢。
答案 0 :(得分:0)
C#中的名称区分大小写,因此token
和Token
指的是不同的内容。您的代码正在使用Token
,而不会触及token
,然后返回token
。
我相信下面的代码应该做你想要实现的目标。
public object SetValue(JToken token, string[] position, string value)
{
JToken Token = token;
foreach (string pos in position)
{
Token[pos] = value;
}
return Token.ToString();
}
我建议从这里做一些改进:
object
。如果可以,请更具体。如果您要返回token
返回类型为JToken
,如果您要返回token.ToString()
,则返回类型为string
; var
而不是JToken
类型的全名。静态代码分析器建议使用var
。相同的功能改为上面的建议如下:
public string SetValue(JToken token, string[] positions, string value)
{
var jtoken = token;
foreach (var pos in positions)
{
jtoken[pos] = value;
}
return jtoken.ToString();
}