将 JSON 字符串从一个应用程序传递到另一个应用程序(Windows 8.1 应用程序)C#

Posted

技术标签:

【中文标题】将 JSON 字符串从一个应用程序传递到另一个应用程序(Windows 8.1 应用程序)C#【英文标题】:Pass JSON string form one app to another app (Windows 8.1 Apps) C# 【发布时间】:2016-10-26 23:16:48 【问题描述】:

我正在使用自定义协议从 Windows 运行时应用程序打开另一个应用程序。我正在使用以下代码 sn-p:

await Launcher.LaunchUriAsync(new Uri("appb://hello"));

当有纯字符串时它工作正常。但它在传递 JSON 字符串时会出现解析错误。 Invalid URI: The hostname could not be parsed.

我正在通过以下方式创建 JSON:

 JObject jObj = new JObject();
 jObj.Add("Name", "abcdef");
 jObj.Add("Address", "acvdfs");
 string json = jObj.ToString();

它给 JSON 格式:

“名称”:“abcdef”,“地址”:“acvdfs”

【问题讨论】:

在使用 JSON string 值时,能否请您提供一下? 另外,您是否将 whole JSON 字符串传递给方法?还是您首先获得所需的值,然后然后通过它?如果是第一个,那是因为 JSON 的工作方式——首先,您需要通过键获取值。有关 JSON 语法,请参见此处:w3schools.com/json/json_syntax.asp - 如果您可以提供 JSON string 的值,这也会有所帮助:) 那么,您正在传递整个json 字符串吗? 是的。喜欢:await Launcher.LaunchUriAsync(new Uri("appb://" + json)); 嗨 Kishor,我尝试转换为 base64,但它仅适用于短 json 字符串,可能是因为尝试编码大字符串时末尾有 '==' 字符。 【参考方案1】:

您的问题是因为您要发送 整个 json 字符串以创建为 Uri。

您需要从字符串first中获取所需的值,然后然后将这些值传递给您的方法。

举个例子,假设你的

JObject jObj = new JObject();
jObj.Add("Name", "abcdef");
jObj.Add("Address", "acvdfs");
string json = jObj.ToString();

代码会给你一个“Name/Address”输出 - appb://abcdef/acvdfs

您需要先获取值,而不是将其直接解析为 string

否则你的

“名称”:“abcdef”,“地址”:“acvdfs”

是什么原因造成的

无效的 URI:无法解析主机名。

错误。

您可以这样做以从该字符串中检索值:

var values = jObj.Properties().Select(x => x.Value.ToString()).ToArray(); // Gives you an array of the values.

var path = string.Join("/", values); // Creates an "a/b" path by joining the array.

await Launcher.LaunchUriAsync(new Uri("appb://" + path)); // Give that path to create the Uri and pass to your method.

此代码假定您只是按照我的方式使用键来创建路径。它适用于任意数量的键,因为它只是将所有值与“/”连接在一起 - 例如a/b/c/d/e/f/g

任何问题,尽管问:)

希望这会有所帮助!

【讨论】:

我也试过了。它给出了abcdef\acvdfsin 路径。但它再次抛出同样的错误:( 澄清一下,这是假设您在声明 jObj 的同一部分中使用示例。如果您要从其他地方检索“正确”的 Json 字符串,您可能需要考虑以不同的方式解析它。 C# 的 JsonConvert 类是救生工具:newtonsoft.com/json/help/html/t_newtonsoft_json_jsonconvert.htm 啊,我的错误是给你一个“\”字符而不是你的 Uri 的一个“/”。删除 Path.Combine 并改为使用 var path = string.Join("/", values); :)

以上是关于将 JSON 字符串从一个应用程序传递到另一个应用程序(Windows 8.1 应用程序)C#的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 字符串从一个视图传递到另一个视图

如何将变量从一个应用程序域传递到另一个应用程序域

如何将数据从一个单元格传递到另一个视图?

如何将变量从一个剃须刀页面传递到另一个?

如何将 JSON 值从一个 ViewController 传递到另一个

使用使用 Angular 6 的服务将 JSON 文件从一个组件传递到另一个组件