我想将名称item1、item2、item3、item4、item5更改为FunctionSuccessful、Errorline1、Errorline2、Errorline3、Errorline4。我该怎么做?
我的代码不能像预期的那样工作,因为它仍然在客户端代码中返回item1,item2,item3,item4,item5,而不是新名称Function成功,错误线1,错误线2,错误线3,错误线4:
我应该在Azure函数中更改什么,以便它在客户端代码中返回新的名称Function成功、错误线1、错误线2、错误线3、错误线4?
Azure功能:
[FunctionName("AddUsernamePasswordEmailToAccount")]
public static async Task<dynamic> NewCall(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage req, ILogger log)
{
// ...
bool functionsuccessful = false;
string errorline1 = string.Empty;
string errorline2 = string.Empty;
string errorline3 = string.Empty;
string errorline4 = string.Empty;
var result = await clientAPI.AddUsernamePasswordAsync(request);
if (result.Error != null)
{
var errors = OnPlayFabError(result.Error, language);
errorline1 = errors[0];
errorline2 = errors[1];
errorline3 = errors[2];
errorline4 = errors[3];
}
else
{
functionsuccessful = true;
}
return (FunctionSuccessful: functionsuccessful, Errorline1: errorline1, Errorline2: errorline2, Errorline3: errorline3, Errorline4: errorline4);
}
客户代码:
Dictionary<string, object> dic = PlayFabSimpleJson.DeserializeObject<Dictionary<string, object>>(result.Result.FunctionResult.ToString());
if (dic.TryGetValue("FunctionSuccessful", out object a))
{
addedcredentials = (bool)a;
}
if (dic.TryGetValue("Errorline1", out object b))
{
errorline1 = (string)b;
}
if (dic.TryGetValue("Errorline2", out object c))
{
errorline2 = (string)c;
}
if (dic.TryGetValue("Errorline3", out object d))
{
errorline3 = (string)d;
}
if (dic.TryGetValue("Errorline4", out object e))
{
errorline4 = (string)e;
}
我希望你身体好。您可以使用一种简单的策略,对字符串进行编码,其中第一个字符就是代码。
编码:用代码表示的字符串
0:成功
1:错误行1。客户端异常1。。。。
2:错误第2行。客户端异常2......
3:错误行3。客户端异常3。。。。
4:错误行4。客户端异常4。。。。
在客户端,首先检查代码,字符串的第一个字符。
字符串结果=s1。子串(0,1);
并应用Swicth结构。。
使用所需的属性创建自己的类型,并返回该类型。
public class Result
{
public bool FunctionSuccessful { get; set; }
public string Errorline1 { get; set; }
public string Errorline2 { get; set; }
public string Errorline3 { get; set; }
public string Errorline4 { get; set; }
}
以及:
return new Result
{
FunctionSuccessful = functionsuccessful,
Errorline1 = errorline1,
Errorline2 = errorline2,
Errorline3 = errorline3,
Errorline4 = errorline4
};
我玩了一会儿这个,因为我可以重现你的问题,我发现了一些有趣的事情。
首先,它这样做的原因是Azure函数运行时依赖于Newtonsoft。Json
,而正是这个包序列化了响应。此外,如果您阅读了元组文档,您将看到:
元组字段的默认名称是Item1
、Item2
、Item3
等等。您始终可以使用字段的默认名称,即使在显式指定或推断字段名称时也是如此
依赖这些默认名称可能会使支持元组的库更加简单。如果您在Newtonsoft上阅读了此问题。Jsonrepo,您将看到一个讨论,其中人们对实现命名元组字段的成本持怀疑态度,因为他们认为不值得努力。
因此,为了清楚起见,我可以在一个简单的控制台应用程序中重现您的问题:
using Newtonsoft.Json;
static void Main(string[] args)
{
var functionsuccessful = true;
var errorline1 = "error 1";
var errorline2 = "error 2";
var errorline3 = "error 3";
var errorline4 = "error 4";
var result = (FunctionSuccessful: functionsuccessful,
Errorline1: errorline1,
Errorline2: errorline2,
Errorline3: errorline3,
Errorline4: errorline4);
var serialised = JsonConvert.SerializeObject(result);
Console.WriteLine(serialised);
}
产生以下输出:
{
"item1": true,
"item2": "error 1",
"item3": "error 2",
"item4": "error 3",
"item5": "error 4"
}
但我发现有趣的是,使用系统序列化。文本Json
:
serialised = System.Text.Json.JsonSerializer.Serialize(result);
Console.WriteLine(serialised);
生产:
{}
我无法解释。我不太愿意称之为bug,但我绝对没想到会是这样。
编辑:在查看了Seabizkit
的注释后,System还不支持
,正如这个GitHub问题所确认的,应该为其添加。NET 5.ValueTuple
。文本。Json
问题内容: 我正在寻找一种重命名Hashmap密钥的方法,但是我不知道在Java中是否可行。 问题答案: 尝试删除该元素,然后使用新名称再次放置它。假设地图中的键是,则可以通过以下方式实现:
问题内容: 基本路线是这样的: 是否可以命名该路由并在任何模板中使用它,以便可以像这样使用它: 灵感来自Django :) 问题答案: 没有开箱即用的机制。但是,您可以模仿Django的样式:定义文件,该文件将包含URL数组。首先开始: myviews.js urls.js 现在在 app.js (或任何主文件)中,您需要将URL绑定到Express。例如这样: app.js 现在,您可以定义自定
问题内容: 我经常在eclipse中使用重构->重命名功能,并且我也习惯于命名关联的单元测试TestedClassNameTest。但是,当我重命名测试过的类时,我一定不要忘记重命名我的unitTest。重命名已测试的类时,自动重命名我的单元测试非常有用。 我想创建一个可以完成任务的插件并不难,但也许甚至没有必要吗? 问题答案: 经过几次谷歌搜索和日食搜索后,似乎该功能尚不可用。 今天,Eclip
Nrwl说在这里问。看来我是第一个! 我搞错了。我用nx原理图创建了一个名为Angular的项目。如果可能,我想重命名名称空间,以便访问我的库,如: 而不是: 我尝试在angular-cli.json和package.json中更改项目名称,但我非常确定这不是答案。 此外,nx将不能作为标记使用,因为它已经在其他地方使用。我建议使用nrwl nx。 编辑:划掉那个。我没有足够的声誉来创建新标签。如
问题内容: 我目前正在使用jar-with-dependencies程序集创建这样的jar。但是,我的罐子的名称有点长。 由于AS400上的RPG程序正在使用此jar,因此我想缩短它,以使这些开发人员的工作更加轻松。但是,除了手工之外,我还没有找到一种方法来从通常的罐子中重命名罐子。我想要类似的东西 无论如何,在没有基本复制jar-with-dependencies程序集描述符并将其完全调用的情况
问题内容: 我有这样的查询(简体): 我从Java执行此查询,我想将其映射到我的课程上,但是我不希望将’_id’映射到’name’字段上。因为如果我做这样的事情: 然后,当我将数据保存回mongo(经过一些修改)后,我希望生成一个真实的ID时,数据将以名称’_id’保存。 那么,如何在$ group操作之后重命名“ _id”? 问题答案: 您可以通过 在管道的末尾添加一个阶段来实现此目的,如下所示