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

Pass JSON string form one app to another app (Windows 8.1 Apps) C#

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

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 为:

{ "Name": "abcdef", "Address": "acvdfs" }

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

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

举个例子,假设您的

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

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

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

否则你的

{ "Name": "abcdef", "Address": "acvdfs" }

是什么导致了

Invalid URI: The hostname could not be parsed.

错误。

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

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

有任何问题,尽管问:)

希望对您有所帮助!