小编Nic*_*eet的帖子

当要解析的元素是json字符串的元素时,使用gson解析json的最简单方法是什么?

我正在使用gson将json解析为java bean.对于我使用的API,大量的json结果将结果包含为json对象的第一个属性."gson方式"似乎是创建一个等效的包装器java对象,它具有一个目标输出类型的属性 - 但这会导致不必要的一次性类.这样做有最佳实践方法吗?

例如解析: {"profile":{"username":"nickstreet","first_name":"Nick","last_name":"Street"}}

我要做:

public class ParseProfile extends TestCase {
    public void testParseProfile() {
        Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
        String profileJson = "{\"profile\":{\"username\":\"nickstreet\",\"first_name\":\"Nick\",\"last_name\":\"Street\"}}";
        ProfileContainer profileContainer = gson.fromJson(profileJson, ProfileContainer.class);
        Profile profile = profileContainer.getProfile();
        assertEquals("nickstreet", profile.username);
        assertEquals("Nick", profile.firstName);
        assertEquals("Street", profile.lastName);
    }
}

public class ProfileContainer {
    protected Profile profile;

    public Profile getProfile() {
        return profile;
    }

    public void setProfile(Profile profile) {
        this.profile = profile;
    }
}

public class Profile {
    protected String username;
    protected String firstName;
    protected String lastName; …
Run Code Online (Sandbox Code Playgroud)

java serialization parsing json gson

12
推荐指数
1
解决办法
5063
查看次数

我可以在iOS上使用NSURLSessionDownloadTask进行HTTP缓存吗?

我正在尝试使用NSURLSessionDownloadTask,并利用Apple的内置URL缓存功能.NSURLSessionDataTask使用下面的代码时,我已经成功地使缓存工作:

- (void)downloadUsingNSURLSessionDataTask:(NSURL *)url {
    NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request];
    [dataTask resume];
}

- (void)cachedDataTaskTest {
    // This call performs an HTTP request
    [self downloadUsingNSURLSessionDataTask:[NSURL URLWithString:@"http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"]];
    [NSThread sleepForTimeInterval:1];

    // This call returns the locally cached copy, and no HTTP request occurs
    [self downloadUsingNSURLSessionDataTask:[NSURL URLWithString:@"http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"]];
}
Run Code Online (Sandbox Code Playgroud)

但是,我需要执行后台下载,我必须使用NSURLDownloadTask.切换到此时,不会发生缓存行为.

- (void)downloadUsingNSURLSessionDownloadTask:(NSURL *)url {
    NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSURLSession *session = [NSURLSession …
Run Code Online (Sandbox Code Playgroud)

ios

9
推荐指数
2
解决办法
2771
查看次数

WCF REST服务是否支持使用任意元素顺序对XML消息进行反序列化?

我有一个C#WCF REST服务,它允许添加书签,通过发送带有以XML格式化的书签的HTTP POST请求.我已经为服务指定了操作契约,它获取了xml并自动为我反序列化了对象.我的问题是,如果请求中的XML元素按字母顺序给出,则反序列化只能正常工作,并且不会填充任何无序元素的值.

其他地方已报告此行为.

我发现这非常令人不满意; 我认为以特定顺序构造XML的要求是不必要的,并且是一个令人头疼的问题.这是添加到服务的所有客户端的主要要求,也是调试可能存在的难题的来源.

是否可以指示WCF与XML元素顺序无关?


一些进一步的细节用于澄清目的:

我的运营合同如下:

[OperationContract]
[WebInvoke(Method="POST", UriTemplate = "/{username}/bookmarks", ResponseFormat = WebMessageFormat.Xml)]
public void PostBookmark(string username, RestBookmark newBookmark);
Run Code Online (Sandbox Code Playgroud)

RestMessage如下所示:

[DataContract(Name = "Bookmark", Namespace = "")]
public class RestBookmark
{   
    [DataMember]
    public string BookmarkMd5 { get; set; }

    [DataMember]
    public string Url { get; set; }

    [DataMember]
    public string UserName { get; set; }

    [DataMember]
    public string Title { get; set; }

    [DataMember]
    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我发送以下XML消息,则只有在调用PostBookmark()时才会填充RestMessage对象的UserName属性:

<?xml version="1.0"?><Bookmark><UserName>nick.street</UserName><Url>http://www.stackoverflow.com</Url><BookmarkMd5>f184eb3347cf94f6ce5f5fc2844e3bdd</BookmarkMd5><Description>Developer Forum</Description><Title>Stack …
Run Code Online (Sandbox Code Playgroud)

c# rest wcf

5
推荐指数
1
解决办法
2643
查看次数

标签 统计

c# ×1

gson ×1

ios ×1

java ×1

json ×1

parsing ×1

rest ×1

serialization ×1

wcf ×1